text:
When I was pulling apart my u8plus smartwatch, I noted that there were five unlabelled pads, and that these were likely jtag:
Although I had reasonable results with jtagenum, nothing I tried worked with a real adaptor. I turned to google and rediscovered bunnie/xob's work on fernvale. Xob specifically mentions problems with jtag:
"In theory it has JTAG, which should let us attach a debugger and break the execution flow of the CPU. However, we never got it working, and it's unclear what steps must be taken, or even which set of pins to use."
Making the assumption that if bunnie/xob couldn't get the jtag working, I was unlikely to stumble on the required magic. Instead I pulled xob's repo to see what it would do with the mt6261. It was able to connect and extract a bunch of information:
Waiting for serial port to connect: ....... Setting serial port parameters... Ok Initiating communication... Ok Getting hardware version... 0xcb01 Getting chip ID... 0x6261 Getting boot config (low)... 0x0000 Getting boot config (high)... 0x0000 Getting hardware subcode... 0x8000 Getting hardware version (again)... 0xcb01 Getting chip firmware version... 0x0001 Getting security version... v 5 Enabling security (?!)... Ok Reading ME... 00000000 ad 3f 07 fa 5e 5d 0b ad 10 71 b2 02 3d 5b e5 a3 |.?..^]...q..=[..| Disabling WDT... Ok Reading RTC Baseband Power Up (0xa0710000)... 0x0002 Reading RTC Power Key 1 (0xa0710050)... 0xa357 Reading RTC Power Key 2 (0xa0710054)... 0x67d2 Setting seconds... Ok Disabling alarm IRQs... Ok Disabling RTC IRQ interval... Ok Enabling transfers from core to RTC... Ok Reading RTC Baseband Power Up (0xa0710000)... 0x0002 Getting security configuration... None. Getting PSRAM mapping... 0x0000 Disabling PSRAM -> ROM remapping... Ok Checking PSRAM mapping... 0x0002 Checking on PSRAM mapping again... 0x0002 Updating PSRAM mapping again for some reason... Ok Reading some fuses... 0x00000000 Enabling UART... 0x0000
This looked promising but it was hanging before it could attempt to upload the first stage. A lucky guess (based on reading *somewhere* that 6261 had less SRAM) at hacking the load address and the stack address let it continue though to:
Loading Fernly USB loader... checksum matches 0x1ec6 Ok Executing Ferly USB loader... Ok Waiting for Fernly USB loader banner...
At this point, it seems that we might have code running on the cpu; the watch was unresponsive until I pulled the USB - I was hoping I had at least crashed it..
The fernly usb loader is able to read/write memory pretty trivially, so I used it's functions to dump the 4MB of onboard flash (at 0x0). I also attempted to 'spray' all over the area where the uart blocks are on the 6260; with the bus pirate connected to the hardware uart, I thought I'd at least see something random spit out - no luck.
Having a dump of the flash to analyse is useful, but - from reading though the fernly information - a dump of the rom (at 0xfff00000) is where a lot of the hardware detail is hiding. I didn't expect that to be a problem, I expected the usb loader to just dump it out for me; instead it hung, turns out that area is protected from usb reads.
After quite a while of searching for something even remotely looking like a memory map for the 6261, so I could use the uart to dump the rom, I came across this post by jimparis. He'd been through the same process, and also hadn't been able to find the uarts. What he had found though was the address of the vibration motor; his code buzzed the motor on my watch too. Jim also says "So I'm sure that code is running now. What's next? Try to find and dump the internal ROM via the motor? :/"
When I read that, I vaguely remembered reading about how the original ipod rom was dumped and thought that I could do something similar with the vibrator motor. My set up is much simplier than the ipod - I de-soldered the motor and after a quick examination with the scope, I patched the line into an adruino.
The assembler for the mt6261-test image was modified to loop through a memory range, reading in a 32 bit value, and then generating a pulse for each bit. I'm lazy - I chose a short 'on' (1x call to delay()) for zero, a long 'on' (2x calls to delay(), so double the length), using 'off' to represent the gap between bits; e.g:
1 0 1 0 0 1 = off, long, off, short, off, long, off, short, off, short, off, long, off
The main assembler loop was debugged using qemu-arm+gdb (the image can be used as a qemu flash image) before attempting to upload to the real device. On the arduino side, a pin was monitored and the length of the pulses was tracked. If the pulse was over a certain threshold then a '1' is output, otherwise a '0'. To validate the method before dumping the unknown rom, I dumped the first part of the flash - this was compared with the data dumped using the usb loader and after a few tweaks they were bit perfect. A small bit of throwaway python was hacked together to reassemble the bits into a file:
s = """ 10110000000000000000000001010111 01111111111111111111111101010111 01111111111111111111111101010111 01111111111111111111111101010111 01111111111111111111111101010111 01111111111111111111111101010111 01111111111111111111111101010111 01111111111111111111111101010111 ... 00000000000000000000000000001110 00000000000001000000000000001110 00000000000000100000000000001110 00000000000001100000000000001110 00000000000000010000000000001110 00000000000011010000000000001110 """ import struct l = s.replace("\n\n", "\n").split('\n') f = open('file.dat', 'wb') for x in l: try: i = int(x[::-1], 2) f.write(struct.pack('I', i)) except: pass f.close()
This method wasn't fast - and I suspect that the pulse lengths could be reduced somewhat - but it was getting late, and in the end I just left it running overnight. When I got up, it had stopped before the end of the 64k - however when reassembled I had a 44k file, that seemed to contain the whole rom :) - here's some strings:
SF_BOOT BRLYT P0Dx [USBDL] Waiting for start cmd over 1 min ... p[USBDL] Waiting for host's response over 1 min ... 8pGpGpG -JD2 KXhA p!LD4 ACM COMMU. ACM DATA ACM VIRTUALCOM RC_INIT JM 5X EM15M pRESV0 H@xpG xSxG" pBOOTRETY pBoot failed, reset ... System halt! DELY@ pUART0\ p1_ENJump to BL MhhB D^[a5d pUART,\ p1_EN xpGLI EEEEMMM h,I FILE_INFO HpG SCTLCERT "x1h BBBB I h ZZZZ HapG `BA02 G G(G0G8G8 "#KBC{D Invalid Operation Divide By Zero Overflow Underflow Inexact Result : Heap memory corrupted Unknown signal X65dAl Abnormal termination Arithmetic exception: Illegal instruction Interrupt received Illegal address Termination request Stack overflow Redirect: can't open: Out of heap memory User-defined signal 1 User-defined signal 2 Pure virtual fn called C++ library exception
My fork of the fernly repo (including the arduino sketch) can be found here (mt6261 branch).
I noticed this smart watch on Amazon for the bargain price of £7.51, which was just too cheap to ignore - I didn't expect much but I was quite surprised at how functional it actually was... Anyhow, it was never expected to stay in once piece for long, and after an hour I took the screwdriver to it.
The back is covered by a aluminium plate that seemed to be sticky backed; it came off pretty easily. Underneath was four screws that released the back cover.
Inside, not much too see: a 200mAh, 3.7v battery, speaker, reset button (on the right) and what looks like a bluetooth antenna at the bottom.
With the battery and the speaker pulled back we can see a MediaTek MT6261 SoC and supporting components on the left. On the right are connections for the reset button (mounted on top of the usb connector), speaker and what I assume is a vibrator motor connected to 'VIB'. The touchscreen is also connected at the top, with it's controller mounted on the flat flex cable. The home/power button is tucked in on the far left.
The other side of the board, removed from the shell: the connections to the LCD are at the bottom, the power button on the right and some test pads sprinkled all over :)
The 'D+' and 'D-' and the proximity to the USB suggest the four pads on the left are for the USB; VBAT is positive side of the battery; PWR connects to the power/home button. Just slightly covered by the green label is RXD and TXD - which is likely our UART, and two others ('OW2' and 'OL0'). Above them next to PWR are five unlabelled pads - hopefully these are JTAG.
Wires connected to the GND, RXD and TXD, ready for the bus pirate. With the green label removed we can see that the two adjacent pads are actually labelled 'KROW2' and 'KCOL0'...? (I also added a scrap of sticky label to protect the LCD connections a little.)
And finally, the bootloader (@115200):
F1: 0000 0000 V0: 0000 0000 [0001] 00: 0000 0000 U0: 0000 0001 [0000] G0: 0002 0000 [0000] T0: 0000 00BB Jump to BL ~~~ Welcome to MTK Bootloader V005 (since 2005) ~~~ **===================================================** Bye bye bootloader, jump to=0x1000b5b0
During our recent move we found an old Tiger "Wheel of Fortune" electronic game - most of my tools/toys were packed and/or moved at this point so I couldn't do much more than have a quick look inside. Last weekend I found myself wide-awake, very, very early and decided to take a closer look.
The game picks a category (phrase, person, thing etc) and an answer, then you and the cpu-controlled player two, take turns to spin the wheel and guess at the answer. There's a small number of categories built in, but more on the supplied cartridge ("Cartridge 1"). More cartridges were also available separately.
Probing the cart pins with my scope while pressing buttons, I could see that one line lit up when pressing the 'puzzle/cat./enter' button. More probing with my logic sniffer and bus pirate revealed it used a mode 1 SPI bus, with the LSB first. The read protocol is simple: a two byte address is sent by the game (via the MOSI line), and a one byte response is returned using MISO. For example here is the game (MOSI, third row) requesting the byte at 0x0 (two bytes: 0x0 and 0x0) and the cart returning 0xA5 (MISO, first row).
With the protocol worked out I wrote a python script to drive the bus pirate so I could sequentially read the cart's address space and dump the ROM. For dynamic analysis I also placed the dump in the progmem of an arduino mega, running a simple SPI loop that also logs all reads.
00000000 a5 01 12 3a 21 f7 1a e4 23 17 22 e9 12 39 1c 1e |...:!...#."..9..| 00000010 16 03 01 40 06 fc 1b 25 25 25 25 25 25 25 25 25 |...@...%%%%%%%%%| 00000020 25 25 25 25 25 25 25 25 25 25 25 25 25 00 00 00 |%%%%%%%%%%%%%...| 00000030 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
And after running numerous tests, seems to be explained as:
0x00 0xA5 - magic byte, cart is ignored if this isn't here 0x01 0x01 - this seems to be the cart number; it's purpose is to detect if the cart has been changed and if so re-read 0x02(number of categories) 0x02 0x12 - number of categories (actually (n*2)-2)) 0x03 0x3a - low byte of the address of the first category ('TITLE') 0x04 0x21 - high byte of the address of the first category 0x05 0xf7 - low byte of cat. 'PEOPLE' 0x06 0x1a - high byte of cat. 'PEOPLE' 0x07 0xe4 - low byte of cat. 'FICTIONAL CHARACTER' 0x08 0x23 - high byte of cat. 'FICTIONAL CHARACTER' etc
The game cycles though each category in turn until it runs out, it then reads 0x101 and 0x102, which eventually causes it to jump back to the first entry again.
Both the categories and the answers are stored as 20 byte long arrays, that are copied to the 2x 10 char display. Initially it looked as if the chars might just be ascii, but only the vowels were decoding correctly, the other letters appeared to be missing a bit. Turns out that the vowels are 'special' and have to be bought when playing the game - the missing bit is the 'buy' flag. Interesting there's a second flag - that's not used in the game - that gives you that letter, for free, from the start:
| |||| <<< 0 - 31 (1=A, 2=B etc) 0001 0011 ^^^ <<< flags ABC A = always show B = buy C = ?
There's only 32 valid characters (A-Z and a handful of symbols) and possibly a third flag ('C') - although this didn't seem to have any effect during testing.
The game picks an answer by taking the base address of the category and multiplying an internal counter by 20.
Having worked all of that out I wouldn't to be able to do something at least a little bit useful; as I could 1) detect a button press and 2) display text on the screen I thought a TOTP token might be interesting.
Because the game doesn't support numbers when reading from the cart - and a TOTP token is all numbers - I've had to come up with a 'creative' mapping (squint - it's almost right!):
Here's a video showing it in action; the 'PRESS CAT FOR TOTP' message is the only answer in the embedded data, and all letters have the 'always show' bit set. The TOTP code is constantly calculated and written to a overlay variable that is read instead of the real address of the category when the button is pressed.
In a final design, the code would be installed on a ATTiny(+RTC) and placed inside a 3D printed cartridge shell, so it could quickly be swapped in when needed. An attacker looking to acquire the token would have an additional barrier of identifying the device amongst more obvious targets.
Code is hacked together from many SPI examples and Luca Dentella's TOTP code. It can be found here.
Before the new bird box goes up, it needs a camera so we can monitor any nesting activity. I like to use the raspberry pi and their camera boards; they're cheap, highly customisable (a full Linux is a very useful thing) and the rpi2 is fast enough to live stream the video.
The box has only a small hole for the birds to enter through and will be pretty dark most of the time. The 'NoIR' version on the picam is used along with a very cheap, generic, doughnut-shaped, CCTV IR LED array to deal with the lack of light. (The LED array should also provide a little extra warmth for the birds - and bugs.)
The scad code itself is split into three modules: slidein_picam(), irholder() and bracket(). Hopefully this will make things easy when I inevitably want to install another picam elsewhere. This is just the IR holder and slide in module, with just a picam installed:
The IR array is a very snug fit and is held in place by the small amount of springiness in the two left/right 'lobes' - to install mine I needed to slightly bend the lobes out, which gives it a good, solid grip.
Finally, the bracket is a simple 'L' shape, with a 45 degree counter sunk screw hole, and two short forks that fit into grooves already cut in the bird box (in the attached scad and stl I've set them to zero length as I'm imagining a flat surface is of more use to most people).
Scad file here.
STL file here.
We've recently moved house and needed a new doorbell - as I mentioned previously, I'm often working with headphones on and can easily miss a delivery, so I need to be able to trigger a real-time alert to my phone. We chose one of the many, many "1 by one" wireless, 433MHz kits (the one with the big red button).
The simpliest solution seemed to be to use an RTL SDR dongle to sniff the 433MHz band, and then trigger the existing UDP 'latch' that the code on my phone is polling for. However - for whatever reason - my SDR dongle doesn't seem to see any 433MHz traffic. (It has spent the last year living in the shed so maybe it's not so good anymore...)
A second option was to use a cheap 433MHz receiver board I have, and an arduino to do the sniffing and triggering. This sounded feasible but also sounded like mostly software dev; I write a lot of code in the day job and decided that a hardware hack would be more interesting.
The PCB in the receiver is made up of four ICs:
Probing the board with the scope revealed the overall design and exposed some of the power saving features (this is a battery powered receiver):
Based on this, two options are available: the line from the NT200M to the SXD043, essentially triggering on detection of the learnt code; or the line from the SXD043 to the LM4890's shutdown pin, triggering on any playback.
I decided to use to use the 'playback' line on the SXD043, just because it's easier to test - both the volume and chime buttons trigger playback (or I can ground the trigger line), whereas I'd need to press the doorbell - already attached to the front door frame - to test from the NT200M.
The line is fed through an NPN transistor to invert the signal, suitable to patch into the same old DG834v4's GPIO button I was using before.
Image of the transmitter board:
(Update: Thingiverse customiser.)
I put this openscad design together to allow me to mount some of our wildlife cameras on the same pole that the bird feeders hang from. It's been through a few iterations but this final(?) version - printed with 50% infill - is able to take the weight of a fat pigeon on the other end of the 13mm x 500mm horizontal pole. (Image of early versions at the bottom of this post.)
The code is highly parametric and should be suitable for a wide range of pole, bolt and nut (either square or hex, with captive holes) sizes. The hinge code is taken from benjaminedwardmorgan's parametric hinge. It opens to ~270 degrees; the number of hinges will be calculated automatically based on the height.
The code to generate the horizontal pole and tabs (pole_with_tabs() and pole_with_tabs_neg()) has been split into it's own modules so I can easily attach other objects to the same pole - it's my first attempt at a non-trivial openscad module and if I'm honest, usage of it feels a little clunky; I'm sure there must be a better way to deal with removing the negative image.
The available parameters are:
$fn = 0; //$fs = 0.1; // HQ cylinders //$fa = 4; // HQ spheres/hulls render_hinges = true; //$fs = 2; // default //$fa = 12; // default //render_hinges = false; clamp_height = 30; pole_diam = 25 +0.5; screw_hole_diam = 4.5; screw_recess_diam = 9; nut_type = 4; // 4=square, 6=hex horiz_pole_diam = 13 +0.2; hinged_pole_clamp( height=clamp_height, hole_diam=screw_hole_diam, hole_recess_diam=screw_recess_diam, horiz_diam=horiz_pole_diam, nut_type=nut_type, pole_diam=pole_diam); module hinged_pole_clamp( height, hole_diam, pole_diam, hole_recess_diam, horiz_diam, horiz_tab_angle=40, horiz_thick=3, nut_type=6 ){ hinge_fill_x = 23.6; //hardcoded to fit the hinge footprint hinge_fill_y = 20; hinge_fill_z = height; hole_r = hole_diam/2; pole_r = pole_diam/2; hole_recess_r = hole_recess_diam/2; hpole_r = horiz_diam/2; half_space = 0.5; // gap between the two halfs half_width = pole_diam * 1.2; half_depth = pole_diam * 0.6; flap_width = 1; flap_height = hole_recess_diam*1.5; hinge_r1 = 5; num_hinges = clamp_height/(hinge_r1*2) - 1; difference (){ union(){ //one half hull(){ translate([ hinge_fill_x, 0-(half_depth-((hinge_fill_y+half_space)/2)), 0]) cube(size=[half_width*0.8, half_depth, hinge_fill_z]); translate([ hinge_fill_x+(half_width*0.8), (0-(half_depth-((hinge_fill_y+half_space)/2)))+half_depth-flap_width, 0]) cube(size=[ (half_width*0.2)+(hole_recess_diam*1.5), flap_width, hinge_fill_z ]); } difference(){ hull(){ translate([ hinge_fill_x, 0-(half_depth-((hinge_fill_y+half_space)/2)), 0]) cube(size=[half_width*0.8, half_depth, hinge_fill_z]); translate([ hinge_fill_x, 0-(pole_diam/2)+(horiz_thick)-(hpole_r), height/2]) pole_with_tabs_neg( width=half_width*0.8, pole_r=hpole_r, pole_thick=horiz_thick, hole_diam=screw_hole_diam, tab=false, tab_angle=horiz_tab_angle); } translate([ hinge_fill_x-(pole_diam*0.1), 0-(pole_diam/2)+(horiz_thick)-(hpole_r), height/2]) pole_with_tabs_neg( width=half_width*0.9, pole_r=hpole_r, pole_thick=horiz_thick, hole_diam=screw_hole_diam, tab=true, tab_angle=horiz_tab_angle); } //hinge fill translate([0, 0, 0]) cube(size=[hinge_fill_x, hinge_fill_y+half_space, hinge_fill_z]); //the other half hull(){ translate([ hinge_fill_x, (0-(half_depth-((hinge_fill_y+half_space)/2)))+half_depth+half_space, 0 ]) cube(size=[half_width*0.8, half_depth, hinge_fill_z]); translate([ hinge_fill_x+(half_width*0.8), (0-(half_depth-((hinge_fill_y+half_space)/2)))+half_depth+half_space, 0 ]) cube(size=[ (half_width*0.2)+(hole_recess_diam*1.5), flap_width, hinge_fill_z ]); } translate([ hinge_fill_x, //0-(hinge_fill_y/2)-(hinge_fill_y-half_depth)+(horiz_thick/2), 0-(pole_diam/2)+(horiz_thick)-(hpole_r), height/2]) pole_with_tabs( width=half_width*0.8, pole_r=hpole_r, pole_thick=horiz_thick, hole_diam=screw_hole_diam, hole_recess_diam=screw_recess_diam, nut_type=nut_type, tab_angle=horiz_tab_angle); } translate([ hinge_fill_x+(half_width*1)+(hole_recess_diam*0.75), (0-(half_depth-((hinge_fill_y+half_space)/2)))+half_depth+half_space, height/2]){ rotate(a=90, v=[1,0,0]){ cylinder(h=pole_diam*1.5, r=hole_r, center=true); translate([0,0,0+(half_depth/2)+3]) cylinder(h=half_depth, r=hole_recess_r, center=true, $fn=nut_type); translate([0,0,0-(half_depth/2)-3]) cylinder(h=half_depth, r=hole_recess_r, center=true); } } //pole hole translate([hinge_fill_x+(half_width/2), (hinge_fill_y+half_space)/2, -(((height*1.1)-hinge_fill_z)/2)]) { rotate(a=90, v=[0,0,0]) cylinder(h=(height*1.1), r=pole_r); } //hinges if(render_hinges) translate([10, (hinge_fill_y+(half_space*2))/2 ,0]) rotate(a=(-45/2), v=[0,0,1]) vertical_hinge_negative(theta0=45, height=(hinge_fill_z/num_hinges), n=num_hinges, r1=hinge_r1); } } /* * tol - the smallest distance allowable between interlocking parts of your 3d printer. This gap is the vertical (and horizontal) distance between the cones inside the hinge and is also the diameter and height of the small support structure between hinge elements * r1 - the outer radius of the hinge. the surface of your part should not be farther away from the center of the hinge than this disntace. * r2 - the furthest radius from the hinge where material is removed from the part. * height - the height of each hinge element. The total height of the hinge is n*height. (the cut will extent beyond this distance by height/2 on both sides. The part where you are creating the hinge should have a height of n*height) the height must be greater than 2*r1 * n - the number of hinge elements. One hinge element is divided between the top and bottom. * theta0 - the angle at which the hinge is printed * theta1 - the internal angle formed when the hinge is turned to its limit in one direction (the x- part of the hinge_test_1 example when rotated clockwise as viewed from above) * theta2 - the internal angle formed when the hinge is turned to its limit in the opposite direction */ module vertical_hinge_negative(tol=0.5,r1=5,r2=15,height=15,n=2,theta0=180,theta1=45,theta2=45) { arm_width=2*r1; union() { for(i=[0:n]) translate([0,0,(i-0.5)*height]) difference() { //cone between hinges and cuts around the hinge rotate_extrude() polygon([[r1,0],[r1,height],[tol/2,height-r1+tol/2], [tol/2,height-r1+1.5*tol],[r1,height+tol], [r2,height+tol],[r2,0]]); //exclude a rectangular shape for the arm the connects the hinge to the body rotate((i%2)*theta0) difference() { translate([0,-arm_width/2,-height]) cube(size=[r2*2,arm_width,height*2]); translate([0,0,height-r1]) cylinder(r1=0,r2=height,h=height); } //exclude a triangular shape that limits the motion of the arms on the side of the hinge for(i=[0,1]) mirror([0,i,0]) rotate(-i*theta0) translate([0,0,-tol]) linear_extrude(height=height+3*tol) intersection() { circle(r=2*r2); rotate(theta0+180+theta2) translate([0,r2*3+arm_width/2+tol]) square(size=[r2*6,r2*6],center=true); rotate(theta0-theta1) translate([0,r2*3+arm_width/2+tol]) square(size=[r2*6,r2*6],center=true); rotate(theta0) translate([r2*3,0]) square(size=[r2*6,r2*6],center=true); } } } } //********************************************************* module pole_with_tabs_neg(width, pole_r, pole_thick, hole_diam, tab=false, tab_angle=0, gap=1){ rotate(a=90, v=[0,1,0]){ cylinder(h=width, r=pole_r+pole_thick); } if(tab==true){ // screw hole in tab rotate(a=tab_angle, v=[1,0,0]) translate([width/2, 0, pole_r+(pole_thick)+hole_diam ]) { // tab gap cube([width*1.1, gap, (hole_diam*2)+(pole_thick*3)], center=true); } } } module pole_with_tabs(width, pole_r, pole_thick, hole_diam, hole_recess_diam, nut_type=6, tab_angle=0, gap=1){ hole_r = hole_diam/2; difference(){ union(){ rotate(a=90, v=[0,1,0]){ cylinder(h=width, r=(pole_r+pole_thick)*1.01); } // tab block hull(){ rotate(a=90, v=[0,1,0]){ cylinder(h=width, r=(pole_r+pole_thick)*1.01); } rotate(a=tab_angle, v=[1,0,0]) translate([width/2, 0, ((hole_recess_diam)+(pole_thick*2)+pole_r)/2]){ cube([ hole_recess_diam, (pole_thick*2)+gap, (hole_recess_diam)+(pole_thick*2)+pole_r], center=true); } } } // pole hole translate([0-(width*0.5), 0, 0]) rotate(a=90, v=[0,1,0]){ cylinder(h=width*2.0, r=pole_r); } // screw hole in tab rotate(a=tab_angle, v=[1,0,0]) translate([width/2, 0, pole_r+(pole_thick)+(hole_recess_diam/2) ]) { // screw hole rotate(a=90, v=[1,0,0]){ cylinder(h=pole_r*3, r=hole_r, center=true); //nut/screw recesses translate([0, 0, 0+(pole_r/2)+(pole_thick+gap)]){ cylinder(h=pole_r, r=hole_recess_diam/2, center=true); } translate([0, 0, 0-(pole_r/2)-(pole_thick+gap)]){ cylinder(h=pole_r, r=hole_recess_diam/2, center=true, $fn=nut_type); } } // tab gap cube([width*1.1, gap, (hole_recess_diam*2)+(pole_thick*3)], center=true); } } }
Early versions; too flimsy, couldn't take the weight of the fat pigeons:
Fat pidgeons kept disturbing my carefully positioned birdcams. To disuade them from landing on the most sensitive places I've knocked up some parametric clip on spikes.
The available knobs to twiddle are:
Thingiverse customiser here.
spike_l = 60; // spike length spike_h = 2; // spike height spike_w = 3; // spike width pole_dia = 13; // diameter of the pole pole_thick = 3; // thickness of the clip pole_h = 10; // height of the clip $fn = 48; pole_r = pole_dia/2; difference (){ union(){ translate([0-(spike_w/2), 0, 0]){ rotate(a=-45, v=[0,0,1]) cube([spike_w, spike_l, spike_h], center=false); rotate(a=-22.5, v=[0,0,1]) cube([spike_w, spike_l, spike_h], center=false); cube([spike_w, spike_l, spike_h], center=false); rotate(a=22.5, v=[0,0,1]) cube([spike_w, spike_l, spike_h], center=false); rotate(a=45, v=[0,0,1]) cube([spike_w, spike_l, spike_h], center=false); } cylinder(r=pole_r+pole_thick, h=pole_h); } translate([0, 0, 0-(pole_h*0.1) ]){ cylinder(r=pole_r, h=pole_h*1.2); translate([0, 0-pole_r-(pole_thick*2), 0]) cylinder(r=pole_r+pole_thick, h=pole_h*1.2); } }
(Update: Thingiverse customiser.)
For another project I needed to run various cables to some pole mounted kit. The poles are two different diameters, so I put together this parametric design so I would only need one model.
The available knobs to twiddle are:
pole_dia = 24.5; pole_r = pole_dia/2; pole_thick = 3; pole_h = 5; clip_depth = 10; clip_thick = 2; $fn = 96; clip_depth2 = clip_depth + pole_r; difference (){ union(){ translate([pole_r, 0, 0]){ cube([clip_thick, clip_depth2, pole_h]); translate([0+1, clip_depth2, 0]){ rotate(a=180, v=[0,0,1]){ cube([(pole_r*2), clip_thick, pole_h]); translate([(pole_r*2), 0, 0]){ cube([clip_thick, clip_depth2/2, pole_h]); } } } } cylinder(r=pole_r+pole_thick, h=pole_h); } translate([0, 0, 0-(pole_h*0.1) ]){ cylinder(r=pole_r, h=pole_h*1.2); translate([0, 0-pole_r-(pole_thick*2), 0]) cylinder(r=pole_r+pole_thick, h=pole_h*1.2); } }
(Update: uploaded to thingiverse and customiser.)
A couple of months ago I bought a Reprap 3D printer, and to make space for it in the lab I also brought a bunch of keyhole shelving units. For a while I'd been thinking it would be nice to print a simple hook that would fit the keyholes and while browsing thingiverse I found Timmytool's parametric hook. Now I had somewhere to hang my favourite pair of pliers, but the hook was no good for my favourite screwdriver :)
The script I put together is based on Timmytool's scad file on thingiverse (and still mentions the 'hook' - I was being lazy and haven't unpicked all the original wedge logic) and configuring the keyhole dimensions is still the same:
shelf_width=100, shelf_hole_radius=6, num_holes=4
shelf_width=100, shelf_hole_radius=3, num_holes=8
//width of the shelf shelf_width = 100; //radius of the holes shelf_hole_radius = 3; //number of holes num_holes = 8; //diameter of the large round part of the key hole,make smaller then real (for clearances) key_big = 11; //diameter of the small offshoot from the main key cylinder,make smaller then real (for clearances) key_small = 6; //distance from one key hole to the same point in the next key hole, make slightly bigger then real (for clearances) key_spacing = 39; //thickness of the material the key holes are kut out of, make slightly bigger then real (for clearances) key_thickness = 1.75; //thickness of lugs and support bar support_thickness = 4; hook = 10; //calculated spacer = ((shelf_width - (shelf_hole_radius * 2 * num_holes)) / num_holes) / 2; poke = (shelf_hole_radius*2)+hook; hookStart = support_thickness*2+key_thickness; angle = atan ( hook / poke); hype = poke + hook; KBR = key_big/2; KSR = key_small/2; module wedge() { translate([0,-key_small,0]) difference() { cube([poke,key_small,hook]); rotate(a=[0,-angle,0])translate([0,-1,0])cube([hype,key_small+2,hook]); } } module betterjoints() { intersection(){ translate([0,-KSR,0])cube([key_spacing,key_small,support_thickness*2+key_thickness]); cylinder(h= support_thickness*2+key_thickness ,r1 = KBR , r2 = KBR,$fn=36); } } translate([-KBR- key_spacing/2,-KBR,0]) { //to centre item on the build platform difference() { //shelf translate([KBR, KBR - (shelf_width/2), hookStart]) { cube([hook/2, shelf_width, poke]); } //holes for ( i = [1 : num_holes ] ) { translate([ (KBR/2)-(hook/2), KBR - (shelf_width/2) + (shelf_hole_radius + spacer)*(i *2-1), hype-(poke/2)+(key_small/2)]) { rotate([0, 90, 0]) { #cylinder(h = hook*2, r = shelf_hole_radius); } } } } translate([KBR,KBR - KSR,hookStart]) { //support bar making and wedge translate([poke,0,0])rotate(a=[0,0,180]) wedge(); translate([0,0,-support_thickness]) cube([key_spacing,key_small,support_thickness]); } translate([KBR,KBR,0]) { //post 1 cylinder(h= hookStart + poke, r1 = KSR ,r2 = KSR,$fn=36); cylinder(h= support_thickness ,r1 = KBR , r2 = KBR,$fn=36); betterjoints(); translate([key_spacing,0,0]){ //post 2 cylinder(h= hookStart, r1 = KSR ,r2 = KSR,$fn=36); cylinder(h= support_thickness ,r1 = KBR , r2 = KBR,$fn=36); betterjoints(); } } }
After seeing my previous work on hackaday, one of the designers of the Pace4000/Di4000 - David Fields (aka Vorchan) contacted me:
"Reading your article really took me back, 14 years ago we designed that box. It was actually called DSB for dual standard box since it was the worlds first cable box to support both DocSIS and Davic, the two cable standards at the time. It was designed to support many different cable operators around the world. Telewest and NTL (before the Virgin merger) both took boxes, from the debug you have a rebranded NTL box. The CPU is a Conexant chip (cannot remember the full number) video decoder. It runs VXWorks as the OS. The Broadcom BCM3250 chip is just the cable interface, full docsis/davic modem and video downstream tuner. The conexant CPU runs all the software."
David worked on the hardware and was able to identify some of the other pin outs on the board, and confirm my guess that PL8600 was a serial header (U8600's layout matches a MAX232):
(Click here for a large version.)
ID Colour Description -- ------ ----------- PL8600 Yellow UART - also routed to pins 10 and 12 on the SCART "At boot up as part of the boot loader the box sends out a short UART message, I think AT1, which when connected to a PC running some manufacturing test/service software called DigDeBug would cause the PC to send back a different message that the boot loader would use to boot the box into testing mode and not the normal user UI. Other than this AT command there is no other debug on the UART, its all turned off." PL1300 Blue UART for the Broadcom cable modem chip "This was used for Broadcom specific test modes to get extra cable modem debug from that processor." PL1 Purple I2C to control the tuners directly "Used to allow RF development engineers to control the two tuners (tall metal cans) directly instead of going via the Broadcom chip. This allowed for quicker bring up and test of the tuners while drivers were written." PL5600 Green Used to change the voltage on the NOR reset pin. "This allows up to temporary unlock the NOR boot loader for reprogramming." PL5300 Red JTAG
All of these look like interesting avenues for further research, PL8600 and PL1 initially: PL8600 can be further explored using JTAG+openocd+gdb to identify what the boot loader is sending and/or expecting to receive (more on this soon). And - making the assumption that the tuners are always controlled over the same I2C bus - I should be able to sniff PL1 using my bus pirate while forcing the box into 'tuning mode' (see here and here).


text:
974 members
627 members2032 Comments 10 Likes
2200 members28016 Comments 71 Likes
1677 members
mama syder has not received any gifts yet
Welcome to MBC,
I just wanted to say hello and to offer you a free issue of BOLD, my new E-Zine for people who love to write and read blogs. To get your FREE copy just fill in your name and email HERE.
Your post today was fantastic. I'm following you now and can't wait to read more. Welcome to MBC, glad you're here and that I found you.

subset: commoncrawl


text:
42 CFR 423.552 - Novation agreement requirements.
(a) Conditions for CMS approval of a novation agreement. CMS approves a novation agreement if the following conditions are met:
(1) Advance notification. The PDP sponsor notifies CMS at least 60 days before the date of the proposed change of ownership. The PDP sponsor also provides CMS with updated financial information and a discussion of the financial and solvency impact of the change of ownership on the surviving organization.
(2) Advance submittal of agreement. The PDP sponsor submits to CMS, at least 30 days before the proposed change of ownership date, three signed copies of the novation agreement containing the provisions specified in paragraph (b) of this section, and one copy of other relevant documents required by CMS.
(3) CMS's determination. When reviewing a novation agreement, CMS makes a determination concerning the following:
(i) The proposed new owner is in fact a successor in interest to the contract.
(ii) Recognition of the new owner as a successor in interest to the contract is in the best interest of the Medicare program.
(iii) The successor organization meets the requirements to qualify as a PDP sponsor under subpart K of this part.
(b) Provisions of a novation agreement. A valid novation agreement requires the following:
(1) Assumption of contract obligations. The new owner must assume all obligations under the contract.
(2) Waiver of right to reimbursement. The previous owner must waive its rights to reimbursement for covered services furnished during the rest of the current contract period.
(3) Guarantee of performance. The previous owner must -
(i) Guarantee performance of the contract by the new owner during the contract period; or
(ii) Post a performance bond that is satisfactory to CMS.
(4) Records access. The previous owner must agree to make its books and records and other necessary information available to the new owner and to CMS to permit an accurate determination of costs for the final settlement of the contract period.


text:
Army Wives Blog
Wendy Davis Gets Into Playing Pregnant on "Army Wives"
myLifetime member kimby03 thinks that Joan will remain at Fort Marshall and will not deploy, getting some more time to spend with her new baby girl, Sarah Elizabeth.
Do you agree? Sound off and share your own opinions of what's to come when Season 3 of "Army Wives" returns in June here.
Watch this clip from the latest "Army Wives Confidential" where actress Wendy Davis (Joan Burton) shares some on-set silliness and the lengths she'll go to prove she's committed to playing pregnant by digging into donuts.


text:
Delmas Among ECHL's Elite Tenders
WHEELING – Near the end of practice Tuesday morning at WesBanco Arena, Wheeling goaltender Peter Delmas was playfully shooting pucks into the net. It was irony at its finest, since that's about the only way goals are getting into his cage these days.
Delmas has been named the Reebok Hockey ECHL Goaltender of the Week after going 2-0-1 with a 1.30 goals-against average and a save percentage of .957 in three appearances last week as the Nailers improved to 4-0-2 in their last six games. It's the second such honor of the season for Delmas, and fourth of his career.
"I feel good and I'm just trying to be consistent and do the same things every day, not skip a day," Delmas said. "I'm doing little things like coming out (to practice) early and going to the gym early."
Delmas made 37 saves in a 2-1 shootout loss against Elmira on Wednesday, stopped 20 shots in a 5-2 victory at Trenton on Friday and was credited with 33 saves in a 3-1 victory at Reading on Saturday. He's started Wheeling's last five games, going 4-0-1, with a 1.58 goals-against average and a .941 save percentage.
"I'm never going to turn down a start," Delmas said of the increased workload. "I've been talking a lot with our 'D' and in between games about what we want to do with each team and how we want to play the forwards and keep them to the outside.
"We have a good understanding. Everyone has been playing well of late so that makes it easy on me."
For the season, Delmas is 15-8-4 with three shutouts, is sixth in the league with a 2.29 goals-against average and is tied for fifth with a .920 save percentage. He set the club record for career shutouts (nine) earlier this season.
"He's on a roll here and he's playing with confidence," Nailers coach Clark Donatelli said. "He's keeping it under two (goals) almost every night.
"We're also doing a good job staying out of the (penalty) box. But when we need a big save, Delly's been there and that gives the team a lot of confidence when he's in the net."
There seems to be know question Delmas is an AHL-ready goaltender, except in the minds of Montreal officials, who are the only ones that count.
"You have to have the right attitude," he said. "The only way you're going to get out of here is if you rip it up, so just play your best while you're hear and good things will come."
This Week
The Nailers enter tonight's game against Atlantic Division-leading Reading six points behind Florida and Toledo for the eighth and final playoff spot in the Eastern Conference. With 11 games to play, including four against the Walleye, starting Friday, Saturday and Sunday, Wheeling likes where it's sitting.
In fact, Donatelli sees no reason why his club can't run the table and win each game.
"It's not a coincidence that we're getting the good chances and we're getting the bounces," Donatelli said. "The last game we played against Toledo, they scored two goals in 35 seconds and we kind of beat ourselves.
"It was a 3-2 game and they scored that empty-netter, then they got another one with two seconds left, which wasn't taken well by our team.
"We've got a tough schedule going forward, but it's going to pay off for us come playoff time. The guys here know that if we don't play playoff-type hockey we're not going to make it."
Shawn Rine can be reached via email at firstname.lastname@example.com


text:
- You can view the full Marsh & McLennan Companies Ratings Report.
- Use our insurance section to find industry-relevant news.
- Or find some new ideas from our top rated stocks lists.
- Find other investment ideas from our top rated ETFs lists.
Banks and insurers have surged on hopes of rate rises. What now?
There are several names that could provide above-average appreciation going forward.
TheStreet highlights 3 stocks pushing the insurance industry lower today.
There is so much buying power in so many new areas.


text:
WAKE UP!! WAKE UP!! No more fash by the sea
The free weekly direct action newsheet published in Brighton since 1994 - Copyleft - Information for Action
Prince Kwabena Fosu, a 31-year-old man from Ghana, is one of a long list of people who've died in Harmondsworth detention centre. He died in solitary confinement after an apparent violent interaction with a GEO Group guard on October 30th. The tragic death and subsequent silence demonstrates once again the lethal indifference shown by private contractors, in this case GEO, and once again the hushed inaction in the aftermath stinks of a cover-up.
"There is an inquest which - means there is something suspicious – this week. There's no legal representation and the family have no support. The officer involved went on leave immediately after the incident. It seems very much like their brushing it under the carpet and hoping it will go away," says a NoBorders activist.
Around 15 activists held a noisy demonstration outside the detention centre last Tuesday (6th) during which a mobile number was displayed on a banner along with an appeal for information. Detainees crowded round windows, answering the chants and shouts of 'freedom' and 'liberty' in various languages to the protesters who'd wangled their way close to the detention centre compound and attracted attention with whistles and a megaphone. Several prisoners called to tell what they knew.
"People inside say he was taken to isolation block. They think he was hit because the guard came back with blood on him, and that he didn't have a blanket was very cold all night. He died the next day, he'd called for distress and the guards didn't respond," SchNEWS was told. "Generally people seemed in distress about being in there, there's a tense atmosphere, people are anxious... People are willing to talk to the media, but guards have been threatening them. The guards have been looking into who's been visiting who."
Eventually the demonstration was rounded on by cops who warned them to move or get nicked for 'breach of the peace'. Inside, the guards moved in to block access to the windows.
Harmondsworth, a 615-room centre, is privately run by GEO Group UK Ltd, a company a bit like G4S's equally evil but less notorious little brother. But it's not so little either: it boasts of being the "World's leading provider of correctional detention and residential treatment services with 108 facilities, approximately 75,000 beds, and 20,000 employees around the globe". Other pies in which they put their sticky fingers include 'mental health facilities' and 'community supervision services' with 'cutting-edge' electronic monitoring technologies. Their biggest operations so far are running private prisons in the US.
It stands alongside G4S and Serco as one of the lead beneficiaries of the plan to put power over the increasingly violent deportation machine into private hands, under cosy deals where any idea of public accountability is washed away like blood off a cell floor. It's proving lucrative for them. The new contract for running Dungavel House in Scotland is expected to make the GEO Group £5m per year, continuing the massive year-on-year increases in profits for its UK operations. In general, 2011 was a bumper year for the death squad. Along with the Dungavel deal, the capacity at Harmondsworth was increased by 360 beds.
As well as giving GEO a few million quid in contracts to do their dirty work, the government have been showering the company with dubious awards. GEO won the UKBA's supplier awards in three out of seven categories earlier this year, including Tom Gallety winning Director of the Year and several staff members coming in second place as team of the year for "their work in ensuring Harmondsworth IRC remains a safe and secure place for detainees, staff and visitors".
The official response from GEO management to the latest tragedy? "It would be inappropriate to comment at this stage". Actually, GEO, immediately after the unexplained death of a man incarcerated in your facility – after reports that he was beaten, stripped and locked in a cold room alone and ignored – it is about the time you should be saying something. Likewise, the Home Office have kept silent, with both refusing to disclose even the name and nationality of the man. The 'an inquest is underway' excuse is a handy one: the inquest into the death of an American who died after several days in the neighbouring Colnbrook centre in July 2011 is not due for completion until 2013, long after his name has been forgotten. They also refused to state whether any member of their staff had been removed from duty following the death (the perpetrator, known as Jim, was in fact speedily bundled off on 'holiday').
The company is no stranger to controversy. Across the pond, a GEO-run youth prison in Mississippi was investigated after it was found that guards were sexually abusing inmates – in one case taking a prisoner to a motel for sex – bringing drugs into the premises and using disproportionate violence routinely as a first resort. Other facilities saw inmates riot at bad treatment, while family members of prisoners who died in custody have taken GEO to court for medical negligence of health conditions.
In the UK, the company ran Campsfield House detention centre, near Oxford, until recently. The centre was the target of the Campaign to Close Campsfield House and the location of almost rolling hunger strikes at mistreatment and indefinite detention. A statement from Ghanian detainees at Harmondsworth released after the death pointed not only to the need to explain Prince Kwabena Fosu's death but to the general dire conditions and lack of adequate medical attention at the centre.
As another campaigner told SchNEWS: "UKBA awards and vomit-inducing CSR reports can only camouflage so much. GEO, just like G4S, have blood on their hands. These companies need to be exposed for the role they play in imprisoning and abusing innocent people."
As the UKBA says: "Expanding the number of removal centres is a critical part of our plans to increase the rate of removal of failed asylum seekers and illegal immigrants, and to allow the fast removal of those who come to the United Kingdom and break the rules." GEO look poised to capitalise on detention over the coming years, and neither they, nor their cheerleaders UKBA, want a small fact like the violent death of an innocent person to get in their way. Unfortunately for them, campaigners like those shouting outside Harmondsworth's fences, are equally determined not to let these deaths be forgotten.
As tensions escalate between migrants and the authorities in Calais, the right-wing mayor Natasha Bouchart has made some surprising announcements: demanding a new reception centre for 400 vulnerable people and a day centre for migrants from central government. What's that all about?
The use of 'secret dossiers' to detain Palestinians indefinitely and without charge - the struggle continues as the latest victims are kidnapped and imprisoned.
Mass squatting action in metal recycling plant pulled off in style, after brutal policing leaves hundreds of undocumented people without shelter.
Immigration rights activists descend on Harmondsworth and Colnbrook detention centres to bring a message of solidarity and resistance.
Mass evictions of migrants in progress now
We started writing about three interesting but unrelated things happening in June. Here is an amalgamated version, which is worth a read.
Probation services set to be taken over by private sector mega corporations, during 'revolution' in prison and probation services.
Spanish Guardia Civil use extreme violence against migrants trying to enter the EU as repressive measures against potential migrants take root in Morocco. First hand account...


text:
Key points
General information
EA limits Dead Space 2 to being authorized on a maximum of 5 computers at a time. The games must be authorized on a computer before you can play it, but you can have the game installed on any number of computers as long as only 5 at most are authorized at a time. De-authorizing the game on a computer does not uninstall it.[2]
To de-authorize the games on a computer, simply uninstall it, or follow these instructions:
Some versions of Dead Space 2 may conflict with LucidLogix Virtu graphics switching software which may appear to be an activation error. After the software is installed when the user attempts to launch the game an activation software comes up after activating successfully it's supposed to launch the game executable, but the lucid virtu software will prevent it from doing so without issuing an error, which can make it appear that activation is the problem. Removing the lucid virtu software or disabling it when running Deadspace 2 can resolve the issue.
The latest updates of Dead Space 2 includes a piece of DLC that unlocks better armor and all the weapons at the start, thereby negating the need to find schematics and decreasing the difficulty. It's recommended for full effect that on the first run through you play without this DLC. To remove this DLC, you can download the original .exe here.
Simply make a backup copy of the currently installed .exe, download the old .exe, and copy it to the Dead Space 2 folder. If you switch to the old .exe, you'll also need to reset the keybindings to default.
You'll then be able to play the game without the extra unlocks. However, it recommended that you use the newer .exe for subsequent play-thoughs, as it properly unlocks some bonus items that you normally get for completing the game.
(The Origin version also includes the DLC now, and replacing the .exe no longer works.[6])
(A successful solution to this problem exists by downloading a version 1.0 crack - Tested and working as of 24-6-2016)
There are four special rooms in the game that are unlocked by completing the Dead Space Ignition tie-in which is not available for Windows. With a few files these rooms can be made available. Check out this forums post for full details: Unlock Conduit Rooms.
Normally upon completing the game on Hardcore or Zealot difficulty, you would unlock a special suit. Unfortunately these suits don't unlock properly, unless you happen to complete the game in a single play through. Details on unlocking each suit can be found here.
Occasionally with certain USB controllers or devices, the mouse will fling to the far edges of the screen, preventing proper aiming. To solve this, try:
%LOCALAPPDATA%\EA Games\Dead Space 2
Rollback to older driver version (Such as Catalyst 12.6)
Occasionally, when starting the game on a newer system, the main window will minimize itself and will not let the user restore it. To solve this, do the following:
Window.Fullscreen = true
Window.Height = 1200
Window.Width = 1920
where Window.Height is your desired height and Window.Width is your desired width.


text:
4c Hair
@ ab.k_ || hairstyles for Afro hair.
10 Must Have Back to School Items for 4c College Chicks. See product information here: http://trusu.biz/1ElJnWS More
See this Instagram photo by @kinkynigeriancurls • beautiful 4c hair. Textured hair. Afro. hair.
Anything you wanna say?. More
Hair goals
All Hail Big Hair! - http://community.blackhairinformation.com/hairstyle-gallery/natural-hairstyles/hail-big-hair/
4C Hair Growth IG:@centricsista #naturalhairmag


text:
- Award for Yaa Asantewaa in United States
The women caucus of the African Studies Association in the US is set to honour the legendary Yaa Asantewaa this month during the body's 43rd annual conference in Nashville, Tennessee. The women members of the association who are going to sponsor the award at a conference will reflect on the centenary year of the Yaa Asantewaa War. The Ejisu queen mother fought against the British in 1900. This landmark feat has earned for her a place in the annals of Ghanaian and British history.
Dr. Wilhelmina J. Donkor of the History Section, Department of General and African Studies, Kwame Nkrumah University of Science and Technology will speak on 'The Yaa Asantewaa War and the Modernization in Asante' at the function.
The first premier of a TV documentary on the Ejisu queen mother which is written and produced by Ivor Agyeman-Duah and is expected to be shown later on many TV channels in Africa, Europe and America, will be one of the attractions at the conference.
It will precede a presentation of a paper, "Creating and Restoring Historical Memory: Making the Yaa Asantewaa Documentary". Other speakers expected at the function are: Prof. Lydna R. Day, Brooklyn College- Cunny, New York and Prof. Jean Allman, University of Minnesota.
At the conference Prof J.H. Nketia former president of the Ghana Academy of Arts and Sciences and Horatio Appleton Lamb, visiting professor of Music at Harvard University will be given the Africanist award.
The African Studies Association is the biggest association on African Studies in the world with a membership of some four thousand people most of whom are university professors, journalists and writers. The association also organises the annual Abiola and Claude Ake Memorial Lectures.
Source: Accra Mail
News of 2000-11-13


text:
18, U.S.C., 1461, makes it a Federal crime or offense for anyone to use the United States mails to transmit obscene materials.
A person can be found guilty of that offense only if all of the following facts are proved beyond a reasonable doubt: First: That the person knowingly used the mails for the conveyance or delivery of certain articles, as charged; Second: That the person knew at the time of such mailing the general nature of the content of the matter so mailed; and Third: That the matter so mailed was "obscene" as defined by law. (Note: Willfulness not an essential element.)


text:
Reviewed By jeremy d (RIVERSIDE, CA) Reviewed for a 2013 Ford Econoline —6/20/2014 7:42 AM
i got this for a new E series wagon E350XLT to cover the original carpet as i move my dirt bikes in the van with the seats out. there is not a BEDRUG available for the wagon so a little trimming is needed to make a neat fit. overall the product fits really well and is worth the $ when you look at the cost of replacing the OEM carpet. i am happy with it.


text:
I try to learn and/or experience something new every day. Today I learned about "yarnbombing". And my picture shows a yarnbomb decorating a banister near the Bovine Bakery in Point Reyes Station. A delightful work of art. Fortunately there was a little tag with a Blog-address attached to the bomb. When I returned home I wasted no time and went to the address. I learned that yarnbombs have been installed in San Rafael and Santa Cruz. The Blog is delightful and I recommend that you take a few minutes out of your busy schedule and visit ~ http://streetcolor.wordpress.com ~ you won't regret it.
Oslo in its Prime
1 week ago


text:
Asus Blitz Formula Make Intel ICH9 RAID Driver Disk 18.104.22.1687 Publisher's description
Asus Blitz Formula Make Intel ICH9 RAID Driver Disk 220.127.116.117
- Support Intel next generation 45nm Multi-core CPU
- Intel Quad-core CPU Ready
- Intel Core2 Extreme / Core2 Duo Ready
- Intel P35/ICH9R
- Dual-channel Native DDR2 1066 Support
- Crosslinx Technology
- Fusion Block System
- Extreme Tweaker
- SupremeFX II 8-CH Audio
- LCD Poster
- Voltiminder LED
The Ultimate Gaming / Overclocking Platform
The Republic of Gamers consists only the best of the best. We offer the best hardware engineering, the fastest performance, the most innovating ideas, and we welcome the best gamers to join in. In the Republic of Gamers, mercy rules are only for the weak, and bragging rights means everything. We believe in making statements and we excel in competitions. If your character matches our trait, then join the elite club, make your presence felt, in the Republic of Gamers.
CPU Features
LGA775 Intel 45nm Processor Ready
This motherboard supports the latest Intel 45nm CPU which introduces new micro-architecture features for greater performance at a given frequency, up to 50% larger L2 caches, and expanded power management capabilities for new levels of energy efficiency.
LGA775 Intel Core2 Processor Ready
This motherboard supports the latest Intel Core2 processors in LGA775 package. It also can support Intel next generation 45nm Multi-Core CPU. With new Intel Core microarchitecture technology and 1333 / 1066 / 800 MHz FSB, Intel Core2 processor is one of the most powerful and energy efficient CPU in the world.
Intel P35 Chipset
The Intel P35 Express Chipset is the latest chipset designed to support 8GB of dual-channel DDR3 1066/800 MHz and DDR2 800/667 MHz memory architecture. It also supports 1333/1066/800 FSB (Front Side Bus), PCI Express x16 graphics and multi-core CPUs.
Graphics Technology
ATI CrossFire Technology
ATI�s CrossFire boosts image quality along with rendering speed, eliminating the need to scale down screen resolutions to get the high image quality you want. CrossFire ignites with the higher antialiasing, anisotropic filtering, shading, and texture settings you desire. Adjust your display configurations, experiment with your advanced 3D settings, and check the effect with a real-time 3D-rendered preview within ATI�s Catalyst Control Center to rule your CrossFire system.
CrossLinx Technology
Delivering better game play without the bottleneck of x4 solutions
Crosslinx is an unique technology utilizing a dedicated controller to optimize PCIe allocation with dual x8 lanes. Crosslinx eliminates the graphics data bottleneck found in other x16, x4 solutions. The result is unmatched graphics performance for smoother gameplay and maximum benchmark potential.
Memory Features
Native DDR2 1066 Support
To attain top performance, ASUS engineers have successfully unleashed the true potential of DDR2 memory. While in DDR2 1066 mode, ASUS�s exclusive technology offers a choice of FSB 1333 - providing great performance for 3D graphics and other memory demanding applications.
Dual-Channel DDR2 800
DDR2 is the next generation memory technology to replace the current DDR. With the highest speed up to 800MHz, DDR2 memory provides great performance for 3D graphics and other memory demanding applications.
Performance with Reliability
Fusion Block System
H2O ready: The next step in thermal solution.
The Fusion Block System is a more efficient thermal solution compared to competing followers with complicated looks. It is a hybrid thermal design that combines the ROG�s renowned heatpipe design with the additional ability to connect to a water cooling system. By taking the entire integrated solution into design considerations, the user can enjoy exceptional thermal improvement to north bridge, south bridge, Crosslinx, and even VRM with a single connection. The Fusion Block System is the most versatile, efficient, and the most advanced thermal system there is on a motherboard.
2-Phase DDR2
With the embedded 2-Phase DDR2, this motherboard allows users to reach higher memory frequencies and enjoy better performance. Compared with only one phase solutions, this motherboard ensures longer power component lifespans and higher overclockability due to cooler temperatures and better efficiency..
OC in confidence
The COP EX allows overclockers to increase chipset voltages without the worries of overheating. It can also be used to monitor and save an overheating GPU. The COP EX allows more freedom and less constraint for maximum performance achievement.
Voltiminder LED
Friendly reminder on the intentional madness
In the pursuit of extreme performance, overvoltage adjustment is critical but risky. Acting as the "red zone" of a tachometer, the Voltiminder LED displays the voltage status for CPU, NB, SB, and Memory in a intuitive color-coded fashion. The voltiminder LED allows quick voltage monitoring for overclockers.
Loadline Calibration
Stable and optimal power for sustainable CPU overclock
Maintaining ample voltage support for the CPU is critical during overclocking. The Loadline Calibration ensures stable and optimal CPU voltage under heavy loading. It helps overclockers enjoy the motherboard�s ultimate OC capabilities and benchmark scores.
CPU Level Up
Enjoy up to 40% more performance!
Overclock immediately with OC profile presets. Much more than simple frequency settings, this profile gives gamers compreshensive and detail tuning to frequency, voltages, and even timings to give you a real professional level of overclocking configuration!
Extreme Tweaker
One stop performance tuning shop
Extreme Tweakers is the one stop shop to fine-tune your system to optimal performance. No matter if you�re looking for frequency adjustment, over-voltage options, or memory timing settings, they�re all here!
Sound with Clarity
SupremeFX II
Listen with Absolute HD
SupremeFX II delivers an excellent high definition audio experience to the gamers of ROG. The SupremeFX II features unique audio innovations for gamers to spot enemes in 3D environment during game play. SupremeFX II also provides gamers a special tool to emphasize human voices in games to help make dialogues clearer and more audible.
ROG Unique Features
External LCD Posterr
The new LCD Poster now posts critical POST information in an ever friendly and flexible external display. When system malfunction occurs, the LCD Poster automatically detects device failure and translates the errors on the LCD during POST. Unlike other competing 2 digit displays, users won�t need to read "gibberish" to find out what�s wrong.
Onboard Switch
No more shorting pins or moving jumpers
With an easy press during overclock, this exclusive onboard switch allows gamer to effortlessly fine-tune the performance without having to short the pins or moving jumpers!
ASUS Q-Connector
Make connections quick and accurate
The Q-Connector allows you to connect or disconnect chassis front panel cables in one easy step with one complete module. This unique adapter eliminates the trouble of plugging in one cable at a time, making connection quick and accurate.
Bundled Software
3D Game: S.T.A.L.K.E.R
S.T.A.L.K.E.R: Shadows of Chernobyl is one of the most highly-anticipated 3D FPS games released this year. With highly-realistic graphics and gameplay physics, gamers will be tested to their limits when they are �transported� to an immersive atmosphere that depicts real-life scenes from Chernobyl.
3DMark 06 Advanced Edition
The Gamers� Benchmark 3DMark is the most popular and authoritative
3D benchmark application used by professionals around the world. The 3DMark06 is the latest version in the popular 3DMark series, including advanced SM2.0 and HDR/SM3.0 Shader graphics tests and now including single, multiple core and multiple processor CPU tests as part of the 3DMark score! The accurate performance and image quality diagnostic tool, designed for DirectX9.0c, provides you with all the information you need to make all other competitors look bad.
Kaspersky Anti-Virus
The best protection from viruses and spyware
Kaspersky Anti-Virus Personal offers premium antivirus protection for individual users and home offices. It is based on advanced antivirus technologies. The product incorporates the Kaspersky Anti-Virus engine, which is renowned for malicious program detection rates that are among the industry�s highest.
ASUS Unique Feature
Boost performance when you need it the most!
Applications such as 3D games and video editing demand a huge chunk of system resource. Inject "nitrous oxide" into your CPU! The patented AI NOS (Non-delay Overclocking System) technology intelligently detects system load and automatically boosts performance for the most demanding tasks. Unlike other dynamic overclocking techniques, AI NOS� reacts much faster to satisfy your unending need for speeds .
ASUS O.C. Profile
The motherboard features the ASUS O.C. Profile that allows users to conveniently store or load multiple BIOS settings. The BIOS settings can be stored in the CMOS or a separate file, giving users freedom to share and distribute their favorite overclocking settings
C.P.R.(CPU Parameter Recall)
When the system hangs due to overclocking failure, there is no need to open the case to clear CMOS data. Just simply restart the system, the BIOS would show the previous setting and then users can amend the CPU setting again.
Noise Filter
Eliminate background noise while recording
This feature detects repetitive and stationary noises like computer fans, air conditioners, and other background noises then eliminates it in the incoming audio stream while recording.
EZ Flash 2
Simply update BIOS from a USB flash disk before entering the OS
EZ Flash 2 is a user-friendly BIOS update utility. Simply launch this tool and update BIOS from a USB flash disk before entering the OS. You can update your BIOS only in a few clicks without preparing an additional floppy diskette or using an OS-based flash utility.
Personalize your system with customizable boot logo
The ASUS MyLogo 3 is the new feature present in the motherboard that allows you to personalize and add style to your system with customizable and animated boot logos.
Stack Cool 2
Effective and zero-noise heat dissipation
Stack Cool 2 is a fan-less and zero-noise cooling solution offered exclusively by ASUS. It effectively transfers heat generated by the critical components to the other side of the specially designed PCB (printed circuit board) for effective heat dissipation.
Dual Gigabit LAN
The integrated dual Gigabit LAN design allows a PC to serve as a network gateway for managing traffic between two separate networks. This capability ensures rapid transfer of data from WAN to LAN without any added arbitration or latency.
IEEE 1394a interface
IEEE 1394a interface provides high speed digital interface for audio/video appliances such as digital television, digital video camcorders, storage peripherals & other PC portable devices.
High Definition Audio
Enjoy high-end sound system on your PC! The onboard 8-channel HD audio (High Definition Audio, previously codenamed Azalia) CODEC enables high-quality 192KHz/24-bit audio output, jack-sensing feature, retasking functions and multi-streaming technology that simultaneously sends different audio streams to different destinations. You can now talk to your partners on the headphone while playing a multi-channel network games. All of these are done on one computer.
High-Quality Capacitors & RoHS
Uses 100% All High-quality Conductive Polymer Capacitors
This motherboard uses all high-quality conductive polymer capacitors onboard for durability, improved lifespan, and enhanced thermal capacity.
The motherboard and its packaging comply with the European Union�s Restriction on the use of Hazardous Substances (RoHS). This is in line with the ASUS vision of creating environment-friendly and recyclable products and packaging to safeguard consumers� health while minimizing the impact on the environment.
It is highly recommended to always use the most recent driver version available.
Do not forget to check with our site as often as possible in order to stay updated on the latest drivers, software and games.
Try to set a system restore point before installing a device driver. This will help if you installed a wrong driver. Problems can arise when your hardware device is too old or not supported any longer.


text:
Dismiss NoticeLike to discuss POLITICS? Come join us at PUNNDITS.com!If you like discussing politics and other related topics then your new home (hopefully) for doing just that can be found on Punndits.com! Come join us and help us grow Punndits into a wonderful and safe place to discuss politics with everyone.
Spears not working out after spraining his knee...
Discussion in 'Draft Zone' started by Ken, Feb 26, 2005.


text:
Bath & Body Works: FREE Item w/ Any $10 Purchase
Bath & Body Works just released another great coupon… Get a FREE Item (up to $14 value) when you make ANY $10 Purchase! This coupon is valid through February 10, 2013. Great coupon, especially if you already planned on doing some shopping there!
Flag this deal
What's the matter?


text:
Newegg.com - A great place to buy computers, computer parts, electronics, software, accessories, and DVDs online. With great prices, fast shipping, and top-rated customer service - once you know, you Newegg.
If you are reading this message, Please click this link to reload this page.(Do not use your browser's "Refresh" button). Please email us if you're running the latest version of your browser and you still see this message.
Newegg.com - Computer Parts, Laptops, Electronics, HDTVs, Digital Cameras and More!
Showing Results: Most Recent
This review is from: Beats Studio 2.0 Over-Ear Headphone - Black
Pros: Noise cancelling is excellent.
No batteries!
Quick charge.
Sound is better than most.
Comfortable fit even with glasses.
Cons: Price. Wish I could have caught them on sale.
Red... was hoping for more color choices.
Other Thoughts: All in all saved my sanity on a trip with four flights with various screaming children and old folk who wanted to chat.READ FULL REVIEW
This review is from: SAPPHIRE Radeon R9 290X 100361SR 4GB GDDR5 Video Card
Pros: This card runs everything at max @ 1280X1080, and only needs a couple of settings (shadows and reflections specifically) dropped to run @ 45-50 FPS in most games at 5960X1080 (3 monitor eyefinity setup).
When liquid cooled, it OCs decently, when on air, not so much.
Cons: COIL WHINE - driving me nuts. With the stock fan on you don't notice it, but once I replaced it with liquid it's incredibly annoying.READ FULL REVIEW
This review is from: WD Se WD2000F9YZ 2TB 7200 RPM 64MB Cache SATA 6.0Gb/s 3.5" Enterprise Hard Drive
Pros: It wasn't DOA.
Cons: Drive died after 2 weeks of use.
Other Thoughts: Currently waiting on RMA from newegg, hopefully the new drive will last a bit longer.READ FULL REVIEW


text:
- About
- Why IVHQ?
- Destinations
- Volunteer in Argentina
- Volunteer in Bali - Lovina
- Volunteer in Bali - Ubud
- Volunteer in Brazil
- Volunteer in Cambodia
- Volunteer in China
- Volunteer in Colombia - Bogotá
- Volunteer in Colombia - Cartagena
- Volunteer in Costa Rica
- Volunteer in Ecuador
- Volunteer in Fiji
- Volunteer in Ghana
- Volunteer in Guatemala
- Volunteer in India - Delhi
- Volunteer in India - Dharamsala
- Volunteer in Italy
- Volunteer in Kenya
- Volunteer in Laos
- Volunteer in Madagascar
- Volunteer in Mexico
- Volunteer in Morocco
- Volunteer in Morocco - Marrakech
- Volunteer in Nepal
- Volunteer in New Zealand
- Volunteer in Peru - Cusco
- Volunteer in Peru - Lima
- Volunteer in Philippines
- Volunteer in Portugal
- Volunteer in Romania
- Volunteer in South Africa
- Volunteer in South Africa - Conservation
- Volunteer in Spain
- Volunteer in Sri Lanka
- Volunteer in Tanzania
- Volunteer in Thailand
- Volunteer in Uganda
- Volunteer in Victoria Falls
- Volunteer in Vietnam - Ho Chi Minh
- Volunteer in Zambia
- Projects
- Fees
- Argentina Fees
- Bali Lovina Fees
- Bali Ubud Fees
- Brazil Fees
- Cambodia Fees
- China Fees
- Colombia Bogota Fees
- Colombia Cartagena Fees
- Costa Rica Fees
- Ecuador Fees
- Fiji Fees
- Ghana Fees
- Guatemala Fees
- India Delhi Fees
- India Dharamsala Fees
- Italy Fees
- Kenya Fees
- Laos Fees
- Madagascar Fees
- Madagascar Marine Conservation Fees
- Mexico Fees
- Morocco Fees
- Morocco Marrakech Fees
- Nepal Fees
- New Zealand Fees
- Peru Cusco Fees
- Peru Lima Fees
- Philippines Fees
- Portugal Fees
- Romania Fees
- South Africa Fees
- South Africa Surf Outreach Fees
- South Africa Conservation Fees
- Spain Fees
- Sri Lanka Fees
- Sri Lanka Elephant Conservation Fees
- Tanzania Fees
- Thailand Fees
- Uganda Fees
- Victoria Falls Fees
- Vietnam Ho Chi Minh Fees
- Zambia Fees
- Apply
- Services
- Community
- Groups
- Contact
- More
International Volunteer HQ (IVHQ) offers a range of options for group volunteering and we're experts in creating customized volunteer group trips that expand horizons, foster cross-cultural understanding and make a positive contribution to community projects.
Our 35+ programs in Africa, Asia, Central America, South America, Europe and the Pacific are perfect for volunteer groups and we regularly accommodate university groups, schools groups, youth groups, families, and corporate teams.
At IVHQ, we create customized itineraries that provide a safe environment for group members to learn, grow and challenge themselves. We do this through impactful volunteer programs and cultural immersion.
Planning this experience couldn't have been easier. IVHQ was fantastic to work with - they were proactive in their approach, insightful, had quick responses, and never tired from our many, many questions and sometimes last-minute changes within our group. If you're looking to arrange a group, you will have peace of mind with working with IVHQ - University of Michigan Honors Group Leader
Groups that volunteer abroad with IVHQ choose us because of our affordable fees, our tailored service from experienced volunteer group trip experts and our approach to safety and responsible volunteering. We offer every group a range of value-added services, such as detailed pre-departure training and access to an alumni network of more than 60,000 volunteers. Read more about how we can support your groups below.
University Volunteering
Medical Volunteer Campaigns
Alternative Break Volunteering
Corporate Volunteering
High School and Youth Volunteering
Family Volunteering
University Volunteering
Learn about how we've helped hundreds of groups from some the world's best universities and colleges to have meaningful volunteer travel experiences abroad.
Medical Volunteer Campaigns
Volunteer as a group of medical or pre-medical students to contribute to the development of impactful medical campaigns abroad.
Alternative Break Volunteering
Our alternative break programs are perfect for students who want to do something different with their time off.
Corporate Volunteering
Our corporate volunteering packages and CSR events are designed to amplify innovation, mobilize leadership skills and embed a culture of sustainable development.
High School and Youth Volunteering
Foster valuable life skills and expand the horizons of teenagers and high school students through group volunteering abroad.
Family Volunteering
Discover how your family can volunteer abroad with IVHQ and learn which projects are best suited to groups of family volunteers.


text:
Fatboy Slim, Leftfield and The Strokes helped RockNess secure a UK Festival Award this evening (Thursday), as the Scottish event was given the Line-Up Of The Year prize.
All three headlined the event back in June with Friendly Fires, Ian Brown, Vampire Weekend, Chase And Status, Pendulum and Aphex Twin all performing as well.
A jury of journalists and industry experts deliberated over the decision leading up to the Awards, looking for the festival that had the most vision when booking acts and taking into accounts their budgets.
The Best Major, Best Medium-Sized and Best Small festival awards are to be announced later tonight as the UK Festival Awards continue.
A full list of winners will appear on Virtual Festivals after the show.
Follow the UK Festival Awards 2010 as they happen at twitter.com/vf.


text:
Release Date: July 18th, 2014
Not Yet Rated|1 hr. 32 min.
Plot Summary
The devastating horror of a nuclear apocalypse is now reality and nine desperate strangers find themselves clinging to life in a farmhouse cellar, while radioactive fallout descends on the darkened world above. These would-be survivors face the nightmare of dwindling supplies, poisonous air and the greatest threat of all – the hordes of zombie-like refugees who want in. With each dying day, their choice becomes clearer – stay and let the makeshift shelter become their tomb or face the unknown terrors of the world outside. Starring Edward Furlong, Monica Keena, Andre Royo and C.J. Thomason, AFTERMATH takes a hard look at how far humans will go to survive. And it isn't pretty.
Cast: Edward Furlong, Monica Keena, Andre Royo, Jessie Rusu, C.J. Thomason, Christine Kelly, William Baldwin, Luis Da Silva Jr.
Director: Peter Engert
Distributor: Image, RLJ Entertainment


text:
FDMShort for frequency division multiplexing, a multiplexing technique that uses different frequencies to combine multiple streams of data for transmission over a communications medium. FDM assigns a discrete carrier frequency to each data stream and then combines many modulated carrier frequencies for transmission. For example, television transmitters use FDM to broadcast several channels at once.
Stay up to date on the latest developments in Internet terminology with a free weekly newsletter from Webopedia. Join to subscribe now.
Webopedia's student apps roundup will help you to better organize your class schedule and stay on top of assignments and homework. Read More »List of Free Shorten URL Services
A URL shortener is a way to make a long Web address shorter. Try this list of free services. Read More »Top 10 Tech Terms of 2015
The most popular Webopedia definitions of 2015. Read More »
Java is a high-level programming language. This guide describes the basics of Java, providing an overview of syntax, variables, data types and... Read More »Java Basics, Part 2
This second Study Guide describes the basics of Java, providing an overview of operators, modifiers and control Structures. Read More »The 7 Layers of the OSI Model
The Open System Interconnection (OSI) model defines a networking framework to implement protocols in seven layers. Use this handy guide to compare... Read More »


text:
- 100 - 250 Employees
- Lagos, Nigeria
- 2010
- http://careerslip.com/erisko-ltd
Welcome to Erisko Ltd Career Portal
ERISKO, a company that holds 5 years of expertise in the FMCG segment. Erisko, adapted itself to the changing times, has constantly moved up the value chain.
With a vision of being the market le...
View Full Profile >>
With a vision of being the market le...
View Full Profile >>
Resume Reserve Vault (RRV)
At Erisko Ltd, we recruit from time to time from talents (that have shown interest in working with us) stored in our Resume Reserve Vault. If we do not have a vacancy that interests you but would like an opportunity to join us, please submit your resume for future job considerations.Click here to Submit your Resume to our Reserve Vault
Jobs at Erisko Ltd
There are no Jobs at the moment.
Sponsored Jobs in United States
Relativity Engineer
- Stroz Friedberg
- Highly experienced with Microsoft SQL database administration and management. Knowledge of Network Attached Storage (NAS) Administration....
- New York, NY, US
- 30+ days ago
Science Teacher
- Bedford Stuyvesant New Beginnings Charter School
- Work closely with peers and administration to develop multifaceted curriculum that integrates multiple subjects and approaches to meet the individual needs of...
- New York, NY, US
- 26 days ago
Speech and Language Therapist
- Innovation Charter High School
- Receive regular and ongoing feedback and support from administration and instructional leaders. Innovation offers an excellent benefits package including...
- New York State, US
- 30+ days ago
HP-UX/UNIX Engineer
- Ascent Services Group
- PRIMARY focus is solid Client-UX Administration, secondary focus in AIX Administration. 7-10 years of experience in Client-UX Unix administration at small and...
- Rockaway, NJ, US
- 4 days ago
Psychiatrist/ Psychiatric Nurse Practitioner
- 822 Clinic in Manhattan or Queens
- Responsible for medication administration and management as well as crisis intervention. New York Center for Addiction Treatment Services (NYCATS), a RevCore...
- New York, NY, US
- 25 days ago
- Entertainment Cruises
- Job title: Chef Department: Food & Beverage FLSA status: Exempt Reports to: Director of Food & Beverage Job Summary: Inspired by our commitment to
- New York, NY, US
- 12 days ago
Senior Linux Adminstrator
- TMC Bonds
- 5+ years Systems Administration. Extensive Linux system administration experience (Red Hat, CentOS, Fedora). (i.e., citizenship or permanent resident status)....
- New York, NY, US
- 30+ days ago
Senior Credentialer
- Network Management, IPA
- Develops and/or maintains reporting systems to provide timely information to administration regarding compliance status with guidelines, rules/regulations and...
- Brooklyn, NY, US
- 30+ days ago
Appliance, HVAC & Plumbing Technician
- Choice Home Warranty
- Data entry, customer interaction and administration. We are home service company seeking a results-oriented and highly motivated individuals to work in our...
- Somerset, NJ, US
- 30+ days ago
Business Manager - Pharmacy
- Brookdale Hospital Medical Center
- Bachelor's degree in Business Administration, Accounting, or Finance. The Business Manager reports directly to the Director of Pharmacy, and is responsible for...
- Brooklyn, NY, US
- 30+ days ago
jobs by


text:
(forgot?) or Register
Out-of-the-box solution to get your resume online. Built on WordPress's custom post types, it offers a uniquely familiar approach to publishing
By: Ben Balter.
Orbisius Resume Organizer allows you to organize resumes sent from job applicants for later use.
By: Svetoslav Marinov.
RSS link for this tag.