Postprocessing
None
Glow
Blur
Radial Blur
  1. Hardware Hacking the Motorola Radius R100 Repeater

    December 26, 2015 by Mike
    Here's an album of pics of me (KC3ASF) and /u/bondiblueos9 (N3WCC/AE) working on the repeater. (http://imgur.com/a/feKLz).
     
    We used information from repeater builder and this index had good guides, as well as PDFs of the service manuals. Finding the actual software was a little more difficult. I got a bit brave and downloaded it from the sketchiest website on the planet. Thankfully it didn't have any viruses, and was the actual software.
     
    When I picked it up as a $50 repeater, I had no idea what I was getting myself into. Here's a brief list of some of the issues we ran into:
     
    • The guy who sold me the radio forgot to give me the key to open it
    • Had to build our own programming cable
    • The software needs a 486-era computer to run
    • The software only allows for modifications to tx and rx frequencies within the commercial band
    • The radio, despite the seller assuring me that "it had been up in their club running no problems" was set to commercial bands
    • The transmitter just blasted RF off any normal frequencies and was stuck continuously on when the unit was powered up
    • The power cable that came with the unit was broken
    • Had to tune for new frequencies for anything to work at all, which involved disassembling the entire unit and both radios to access the adjustment points

     
    The Key
     
    The key wasn't too bad. According to repeater-builder it takes a standard motorola 2135 key, which I purchased on eBay for like $3. Once the key came, I was able to open the radio up.
     
    Determining initial frequencies
     
    We connected a 2m/70cm antenna placed about 50ft away to the TX output of the repeater, and connected another antenna to the RX input. We fired up the repeater and listened to it with a Baofeng UV-5R, thankfully there were notes penciled in on the inside for the frequencies it had been set at as well as the DPL codes. We pushed the PTT button on the inside of the repeater and used a NooElec R820T SDR to see the frequencies. Fortunately we had previously corrected the frequency shift on the NooElec so that we could see the accurate frequency by firing up the Baofeng and comparing frequencies with a Signal Analyzer. Here's process for someone with a signal analyzer.
     
    • 1. Put out a known frequency (used Baofeng), and checked the shift with a known accurate Signal Analyzer to make sure that the Baofeng was transmitting on the frequency it claimed it was.
    • 2. Transmit known frequency and adjust frequency shift on NooElec so that it lines up with the known frequency.

     
    It was indeed set on the commercial frequencies. (tx 463.425 rx 468.425 DPL 743). At this point, the repeater was stuck transmitting so we powered it off. According to the table at the top of this overview, a stuck transmitter could have been caused by one of the capacitors (C894, 100uF, 25V), so we replaced it (100uF electrolytic, 35V).
     
    Programming Cable
     
    The next day, we made the programming cable in order to set it to amateur frequencies. We stopped by a closing radioshack and raided them for all the parts we thought we would need. We built the programming cable based on the schematic found on this page. Note: later in the process we had to reduce the 27kOhm resistor to 15kOhm to correct the signal levels.
     
    Programming Software
     
    Then we downloaded the programming software, and had to hexedit it to allow the software to allow programming on the amateur bands (since this is locked out by default) we did this using hexedit and the process is described on the same page as the schematic. Since the software was designed to run on a 486 and I realized I did not have mine with me, we decided to run DosBox with a cycles per second of 3000, a cpu type of 486_slow, and the following setting for the serial port: serial1=directserial realport:COM3 rxdelay:200
     
    We determined the serial settings by checking device manager under serial devices to determine which COM port it was on. We ran the serial cable to a serial to USB adaptor purchased on eBay for about $1 including shipping. We also determined the rxdelay and cycles through trial and error. We ran the other end of the cable goes to the 6C6P port inside the repeater on the control board. There is one for the Receiver and another for the Transmitter. It is NOT programmed through the external JAux DB25 port.
     
    Programming The Receiver
     
    We flipped the Repeater Disable switch on and powered up the device and verified that it was not transmitting. We then attempted to read data (called a code plug) the receiver EEPROM. The software gave a lot of errors and then eventually after tweaking the cpu and rxdelay settings were able to get it to read data successfully. The software was really difficult to use and I would not have been able to figure it out without referencing the programming manual. For example, you need to use a number pad while numlock is on to navigate the menus (i.e. using the numbers instead of the arrows, so 4 and 6 are prev next, etc).
     
    After reading the data, we changed the settings to our desired frequencies (we looked for a shared, non coordinated pair through our local repeater coordination group), then we wrote it back to the receiver radio successfully.
     
    Programming The Transmitter
     
    The transmitter did NOT go anywhere near as smoothly as the receiver went. Whatever we did, the software said that "The Device Is Not Ready" which is indicated in the manual that it is either not powered on or connected. However, it WAS powered on and it WAS connected, as verified by our multimeter.
     
    To diagnose this problem, we hooked up an oscilloscope to our programming circuit on the data in/out lines on both the radio side and the computer side of the circuit. We attempted to read data, and we verified that signals in the form of a square wave were going both from the computer to the radio, and then in response, from the radio to the computer.
     
    Since we could see there was communication flowing both ways, we downloaded COM port sniffer software 14 day trial from eltima this allowed us to monitor the COM port while dosbox was using it. The sniffers showed that the computer was in fact sending and receiving data from the receiver on the COM port, however on the transmitter the computer sent the initial message to the transmitter, and did not receive any data back.
     
    Looking more closely at the signal levels on the oscilloscope we observed that the data coming into the computer from the receiver was at 200mV, while the data coming into the computer from the transmitter was only at 150mV. This prompted us to replace the 27kOhm resistor in the original schematic with a 15kOhm resistor, which increased the voltage to around 300mV, and the computer was then able to talk to the transmitter.
     
    We verified that with this modification it was still able to talk to the receiver. We have not figured out why there is a voltage difference between the transmitter and the receiver in our radio, and if anyone has ideas, I'd love to hear them.
     
    After sorting out the signal issues, we were able to program the desired tx frequency into the transmitter in the same way we programmed the receiver.
     

     
    Tuning The Radios
     
    After programming the transmitter with the desired frequency, the PTT button no longer had any observable effect. According to the manual, this is because we had not yet tuned the transmitter.
     
    The instructions for tuning the radios in the repeater are in the service manual in section 6.5. We OCR'd this document to make it easier to search. There are other various adjustments that can be made, however we skipped right to the RF adjustments to make sure the repeater actually worked.
     
    To properly make all the RF adjustments, you need the following equipment:
     
    • 1. DC Voltmeter
    • 2. Accurate RF power meter that provides a 50 ohm load
    • 3. Accurate frequency counter
    • 4. Suitable attenuator
    • 5. Modulator analyzer or test receiver
    • 6. Audio oscillator
    • 7. Oscilloscope
    • 8. RF Wattmeter with minimum 25W load
    • 9. 4 ohm resistive load (speaker)
    • 10. RF signal generator
    • 11. AC Voltmeter (>1 MHz bandwidth)
    • 12. Small flat and phillips screwdrivers
    • 13. At least 4 hands
    • 14. Patience

     
    In lieu of this equipment, you can improvise as described below. We are hams, right?
     
    Most of the adjustments are straightforward and described in the manual, except for locating test points and adjustment locations on the boards after you remove the RF shielding and take the radios out of the repeater while leaving all the wires connected.
     
    Tuning the Transmitter
     
    To access the RF adjustments for the transmitter, we removed it from the repeater, removed the RF shielding, and flipped it over.
     
    VCO adjustment --
     
    These steps involved the use of a DC voltmeter measuring a voltage of 6V at the SL test point on the transmitter RF board while adjusting a small flathead screw for the VCO frequency control C221. Once this adjustment was made, PTT started having an effect on our NooElec spectrum and the repeater's heat sink started to warm up, indicating the repeater was actually capable of tranmitting.
     
    Output Power Adjustment --
     
    These steps involved the use of a DC voltmeter measuring various voltages on the Power Supply Regulator board, the transmitter command board, and the PA current limit board, as well as the use of an RF power meter that provides a 50 ohm load, while adjusting three phillips screws--High Power Set R453, Low Power Set R455, and Voltage Limit R463--on the transmit command board. For the 50 ohm load on our RF power meter, we simply used our TX antenna. Our RF power meter was a simple SWR/Power meter for the appropriate band with needles for the reading, so we had to eyeball the exact power setting.
     
    Reference Oscillator Adjustment --
     
    These steps involved the use of an accurate frequency counter through a suitable attenuator while adjusting the Frequency Control R163 on the transmit RF board for a reading of the exact transmit frequency without 100Hz. Since we did not have a frequency counter or an attenuator, we used our NooElec to observe the frequency (the AFC function on HDSDR helped to zero in on this) and the air between the repeater TX antenna and our NooElec's antenna as a suitable attenuator.
     
    Deviation Adjustment --
     
    These steps involved the use of a modulation analyzer (FM non de-emphasized and CCITT Filter OFF) or test receiver (non-deemphasized) through a suitable attenuator to determine deviation levels of 4.6Khz, an audio oscillator (capable of 1000Hz and 200Hz tones) connected to the Service Handset connector, an AC voltmeter to read voltages of around 800mV RMS, and an oscilloscope while making various adjustments.
     
    We did not have a modulation analyzer, but we used our NooElec instead, along with air as a suitable attenuator. For the audio oscillator, we downloaded a tone generator on the computer, and hooked the computer headphone jack up to the service handset connector (another 6C6P jack) using the connector 6C6P connector from our programming cable. Our AC voltmeter did not give us good readings, so we used the oscilloscope to measure the RMS of any signals.
     
    We were unable to measure any non-DC voltage as P12-3 and no change in voltage when turning on our tone generator. Since the manual implies that we should have been getting an oscillating signal that we needed to adjust to read 800mV RMS, we instead connected the oscilloscope to our computer audio output and adjusted the volume there until the oscilloscope read around 800mV RMS. This may not have been correct, however we wanted to try to do something similar to the instructions.
     
    To measure the deviation level of the signal on our NooElec, we observed the spectrum around our signal and adjusted the VCO MOD control R302 until the spectrum did not have too much power outside of 4.6kHz above or below our center frequency and the audio output from both the NooElec and our Baofeng was not crackling or distorted but also not too quiet.
     
    For the Reference MOD R305 adjustment, we were unable to view a good waveform on the oscilloscope neither when it was hooked up to the audio output of the Baofeng nor when it was hooked up to the audio output of the NooElec. Instead, we listened to the signal on the Baofeng and made the adjustment until the audio was clear, which was approximately in the middle. Note that in this step there is supposed to be a square wave on the oscilloscope (which we did not observe), and this square wave is supposed to be caused by the transmitter radio clipping the low 200Hz audio.
     
    2-10 Watt RF Power Output Field Adjustment Procedure --
     

     
    These steps involved the use of an RF wattmeter with a 25W load (minimum) connected to the TX antenna connector while making adjustments to the High Power Set Control R453 on the transmit command board. This section may be mislabeled since we connected the RF watt meter and our TX antenna and adjusted the High Power Set R453 to get a reading of 25W.
     
    At this point we high-fived because we got through section 6.5.2 and could get a signal on the correct frequency with audio through the handset connector out of the repeater.
     

     
    Tuning the Receiver
     
    Fortunately, the RF adjustments for the receiver only involve removing the RF shielding since the adjustments are on the side facing up.
     
    VCO Adjustment --
     
    These steps involved the use of a DC voltmeter measuring a voltage of 6V at the SL test point on the receiver RF board while adjusting a small flathead screw for the VCO frequency control C201. Note that the receiver also has a control at C221 like the transmitter, however this is not used.
     
    RF and I-F Alignment --
     
    These steps involved the use of a 4 ohm resistive load (speaker) across the Local Speaker connector on the main board, a DC voltmeter, an RF signal generator to produce an unmodulated on-carrier signal (for your receive frequency) just strong enough to quiet the receiver (we assumed this meant to increase the power until no noise was heard on the connected 4 ohm speaker) and later to produce a signal modulated with a 1KHz tone at 30kHz deviation, and an AC voltmeter having at least a 1 MHz bandwidth for measurements around 10-50mV RMS. The adjustments are made to the "slugs or screws of the front end coils or helicals" which we determined were the 8 metal rectangles with screws on top nearest the side of the repeater with the connectors, as well as a few other small screw adjustments. At no point did we PL disable the receiver while making any adjustments, since we have a DPL model. If you do want to use the PL disable, you will need to install a jumper switch, and be careful if you try to short the connection points while the repeater is powered as you may get sparks and pops if you make contact with a wrong conductor on the board nearby.
     
    To connect a speaker to the local speaker connector, we solder a 1/8" headphone jack onto the local speaker connector points on the main board. Unfortunately, after attempting to use a 4 ohm speaker, an 8 ohm speaker, and the oscilloscope, we were unable to get anything out of the local speaker connector, except some faint tones at one point.
     
    For the adjustment of the three cells of injection filter helical FL3 (right-most when repeater connectors are facing away from you), we were able to get a voltage reading of around 2.7V after adjusting the screws. For these adjustments, the peak voltage was obtained somewhere in the middle of the adjustment extremes, i.e. if you keep turning the screws too far the voltage will begin to drop.
     
    We did not have an RF signal generator, however, we used our Baofeng keyed up with the antenna near the RX antenna and observed a voltage of 19mV on the oscilloscope (in place of an AC voltmeter). The instructions call for an unmodulated signal, and the Baofeng would be producing a modulated FM signal of silence, but we worked with what we had. Adjusting the helicals FL1 and FL2 had no effect on the RMS voltage, however adjusting L51 did increase the voltage. Then adjusting FL3 again had minimal effect. We did not secure the adjusting screws with paint as the instructions suggest because we hope to properly tune the receiver at a later time when we obtain access to proper equipment. The existing paint was easy enough to break through.
     
    For the Volume Control R818 and Quad Coil L54 adjustments, we connected our computer running tone generator software with 1KHz tone from its headphone jack into the microphone input on the Baofeng, and ignored the specification in the instructions to use a 30kHz deviation, since we had no way to adjust that. At this point we did hear a faint tone on the connected speaker, but it was too faint to notice any difference during the adjustments. We connected the oscilloscope across the speaker leads to measure the voltage, but we were not able to get the specified 1V RMS reading or anywhere close. Volume Control R818 had no effect, but we adjusted Quad Coil L54 for max voltage, even if less than 1V RMS.
     
    Squelch Adjustment --
     
    These steps involved the use of a 4 ohm resistive load (speaker) across the Local Speaker connector on the main board, an RF Signal Generator to the RX antenna connector to produce an on-carrier RF signal at 1mV RMS modulated with a 1 kHz tone at 3 kHz deviation, and an AC voltmeter (or oscilloscope) while making various adjustments, measuring various voltages, listening to output from the speaker, and measuring SINAD around 17dB.
     
    Again, we could not hear much from the speaker, and could not obtain a 1.4V RMS reading across the speaker connection. We also used the tone generator software with 1kHz tone connector to the mic input of the Baofeng transmitting next to the RX antenna and ignored the specification of a 3kHz deviation. Additionally, we ignored measuring for the 17dB SINAD level.
     
    Really, for the squelch adjustments, one of us walked away from the repeater and transmitted with the Baofeng while talking and the other made various adjustments while listening to the repeater output on an Icom HT until the audio output sounded good and did not cut out. At this point we also tweaked previous adjustment points to verify they could not be improved.
     
    At this point we attempted another high-five because we got through section 6.5.4 and could successfully repeat a signal using the repeater, but we were tired after the whole ordeal and missed.
     
    TLDR
     
    If we can get access to the specified equipment and not improvise solutions, we would like to go back and make the adjustments again, now that we are familiar with the process, and see if we can make any improvements. The output of the repeater seems like it is a little quiet, and according to the NooElec there are several harmonics. We hope that the harmonics are caused by the proximity of the NooElec to the TX antenna (only 50ft away), but if they are not, we expect to eliminate them by building a duplexer with appropriate filters.
     

     
    Pictures
     
    http://imgur.com/a/feKLz
     



  2. Obstacle Avoidance – Team O'Neil Rally School

    July 7, 2015 by Mike

    “Okay, go, give it gas, let’s go!” my instructor Chris Komar says to me, as we start driving down a hill towards a line of cones on a dirt road that’s just been turned into mud by the water trucks. Chris is known for pushing students’ knees down onto the gas pedal to break them of the habit of lifting off the gas. He’s a big jovial man with a great beard and a deep, hearty laugh. He also, as far as I can tell, was born without fear. I head towards the cones. “Keep the throttle down,” he says impossibly as the cones grow closer at an alarming rate. I push the gas pedal down a little bit further as the little Fiesta’s engine hums up to 4000 rpm, unaware of the obstacle ahead.

    2015-07-06 (1)

    “Now left!” he says at the very last second -- it feels like I have only about three feet ahead of me before crashing through the green traffic cones. I pull the wheel hard to the left, let off the gas, and the car darts left.

     

    I miss the cones but screw it up. Something with the brake or the throttle or the steering wheel. Now the car is hurtling sideways in a long skid towards a row of trees, and thwacking the cones marking the side of the track.

     

    “Give it gas! More gas! Go Go Go!” urges Komar, with a big grin on his face. I fight off my natural instinct to brake, push the pedal down, countersteer, and manage to redirect the car back towards the road without sideswiping the trees. Midway through this adventure I’m looking where I want to go, which happens to be out the passenger side back window, I catch a glimpse of Max, the brand-new instructor in training who has the dubious honor of riding in the back seat.

     

    His face has gone completely white.

     

    Chris laughs and says “Nice save! Good job!” with a big smile on his face. As soon as the car comes to a stop, Max says that he needs to go reset the cones, undoes his safety harness, opens the door, and is halfway down the track faster than Usain Bolt at the Olympics. I can’t say I blame him.

     

    This is the last driving exercise of Day 1 of Team O’Neil Rally School and Car Control Center. The accident avoidance exercise combines all of the skills we’ve been learning throughout the day. Left foot braking, steering with the brakes, and controlling the car on loose and wet surfaces.

     

    There were 11 of us today. 3 of us will be doing the entire 5-day course: there’s me, doing this to let loose for a week, push myself to the limit, and get back in touch with the things I enjoy in life. There’s Will, a teacher focusing on himself and letting go of some of the stress that comes with shaping young lives, and there’s Derric, a 19-year old kid from Georgia who’s looking to develop the skills to drive his Subaru WRX STi like a bat out of hell.

     

    The rest won’t be staying the whole week. There’s a father and son team here from my hometown in rural Pennsylvania, there’s a group of ladies from Colorado who are all in the Porsche club at home (and kicking my butt up and down the dirt all day), and there’s Brandon and Dawn, a couple who flew in from Singapore to “learn how to drive like Ken Block”.

    2015-07-06

    The best part about Brandon and Dawn is that they’re used to driving on the opposite side of the car, in city traffic, and Dawn doesn’t have any experience with manual cars, and yet they’re laughing and smiling all day, and despite having severe jetlag they’re incredibly enthusiastic and insanely optimistic. When she tells me that she stalled the car out again, I tell her that she’s still got another day to become Ken Block. Brandon smiles and nods encouragingly and they jump back into their car to take another go at it. When I run into him at the supermarket later, he gives me a couple of beers. Incredible people - I’m going to miss them later in the week.

     

    Our instructor in the morning tells us that “Optimism and Denial are strategies, hope is not.” He warns us of the dangers of target fixation, and says that if we look where we want to go, even when the car is rotating out of control, it’s much easier to correct it than if we’re staring where we don’t want to go. His advice is proven right time and time again out on the dirt.

    2015-07-06 (2)

    It’s a great course, with great instructors, and by the end of the day I’m faster, smoother, and more in control. I’m looking forward to Day 2.

     



  3. Getting Dogecoind to run on CentOS

    December 28, 2013 by Mike

    I’m on vacation in a rural part of the country for Christmas. I’m able to use the internet through tethering on my phone, but it’s pretty slow. I’m also not able to use the phone and the internet at the same time. Therefore, I decided to work on a project that I could do mostly offline, would help me learn how to work with cryptocurrencies, and generally be a positive help to the community at large.

     

    Therefore I’ve decided to create a Dogecoin faucet. From reading about Bitcoin and interacting with libbitcoin, I have something of an understanding of how these things work. Essentially a faucet needs (please feel free to correct me if I’m wrong in anything):

    1. A copy of the Dogecoin daemon running on the server

    2. This daemon will need to have an entire copy of the blockchain

    3. A wallet run by the daemon

    4. Some coins

    5. A website frontend (html/css)

    6. PHP to interact with the dogecoin daemon (This is done, I think, by making CURL requests to the Dogecoin daemon running on the same localhost server but on a different port. I think there’s a library for this but I could be wrong).

     

    First things first, I’ve decided to google to see if there’s anything on github, and in fact there is a faucet written by a polish girl (https://github.com/Emkacf/dogecoins-faucet/). I’m going to review this code and, if it seems correct, use it.

     

    According to the github comments, the first step is to download and install the dogecoin daemon. This is going to be true regardless of whether or not I use the faucet code that I see here or if I’m going to wind up creating my own. So let’s go to the github for the faucet: (https://github.com/dogecoin/dogecoin)

     

    Using putty to connect to my server so that I don’t have to use up my cellular bandwidth. The github instructions say to run the following:

    sudo apt-get install build-essential \ libssl-dev \ libdb5.1++-dev \ libboost-all-dev \ libqrencode-dev \ libminiupnpc-dev cd src/ make -f makefile.unix USE_UPNP=1 USE_IPV6=1 USE_QRCODE=1

    I’m on CentOS, so I’m using YUM instead. Looking for some of these equivalents.

    build-essential’s equivalent would be yum install make automake gcc gcc-c++ kernel-devel

    libssl-dev’s equivalent would be yum install openssl-devel

     

    At this point I get tired of finding package equivalencies, because I really want to get moving on this and I know that I have a lot of packages already installed for other things. So I grab the zip using wget

    wget https://github.com/dogecoin/dogecoin/archive/master.zip

    and unzip it

    unzip master.zip

     

    and move into the folder to see what we have. There’s a src directory with a makefile.unix. I attempt to make this file using  make -f makefile.unix USE_UPNP=1 USE_IPV6=1 USE_QRCODE=1 and get a ton of errors. Looks like I’m going back to installing dependencies.

     

    Dogecoin is based on Litecoin as they’re both scrypt coins. So I start looking around for a CentOS guide to installing litecoin. I find a litecoin miner tutorial that suggests

    sudo yum -y groupinstall "Development Tools"

    sudo yum -y install git libcurl-devel python-devel screen rsync

     

    The “Development Tools” I think is definitely going to be important, although I thought I had covered it with the yum install previously. As far as screen and rsync, those aren’t going to be important for the Dogecoin daemon, and I’m pretty sure I already have libcurl-devel, and since I’m just downloading the zip from git, I shouldn’t need this second line at all.

     

    Fussing about some more, I’ve decided to delete the .zip and just use git to get the package from git.

     

    git clone https://github.com/dogecoin/dogecoin.git

     

    I need that libboost-all-devel, which in yum is

    yum install boost-devel

     

    and libqrencode-dev, which CentOS is

    yum install qrencode-devel

     

    At this point, trying to find the libminiupnpc-dev I stumble across this article for installing services for Primecoin on centos

    http://www.primecoiner.com/centos-auto-install-servers/

     

    Finally, a decent guide for CentOS for altcoins, although it’s not a scrypt coin, a lot of these will be important. And I’m able to grab the miniupnpc by following this section of the guide:

    cd /root echo 'NOTICE: Downloading miniupnpc 1.6.2…' wget http://miniupnp.tuxfamily.org/files/download.php?file=miniupnpc-1.6.20120509.tar.gz -O  miniupnpc-1.6.20120509.tar.gz tar xzvf miniupnpc-1.6.20120509.tar.gz cd miniupnpc-1.6.20120509 echo 'NOTICE: Compiling miniupnpc 1.6.2…' make echo 'NOTICE: Installing miniupnpc 1.6.2…' INSTALLPREFIX=/usr/local make install

     

    I also grabbed db4 with:

    yum install db4

     

    Now that all the dependencies seem like they might reasonably have been met, I’m going back to try to make dogecoin again.

     

    ---- SOME HOURS PASS ----

     

    Apparently CentOS only has boost 1.4.1 in its yum repositories and I need boost 1.4.8. Since I installed the old boost before, I need to remove it. I’m following the instructions here (http://ben-tech.blogspot.com/2013/06/build-boost-for-impala-in-centos-63.html)

     

    rpm -qa | grep boost

    yum remove boost-*

     

    Download boost

    wget http://sourceforge.net/projects/boost/files/boost/1.55.0/boost_1_55_0.tar.gz/download

    tar -xvzf boost_1_55_0.tar.gz

     

    And it is here that I learn that /tmp is mounted as noexec and I can’t run ./ commands. And also I learn that the bootstrap and installation procedure is different for 1.55 than it was for the ben-tech article.

    ./bootstrap.sh

    ./b2

    ./bjam install

     

    Hah. Just kidding. That apparently only leaves the libraries in the current directory. Now that I’m learning what I actually need to invoke, I’m trying

    ./b2 --prefix=/usr/local/boost --build-type=complete --layout=tagged toolset=gcc link=static,shared threading=multi runtime-link=shared install

    This should give me boost in /usr/local/boost and maybe I can run it again.

     

    Still getting boost errors. How about installing from RPM?

     

    There’s no RPM for CentOS with a later version. I’ve been working on following the bitcoind instructions for CentOS.

     

    --- More hours of dependency hell later -----

     

    Ok, I’ve got dogecoind compiling, but its unable to load some shared libraries. I think that this should theoretically be pretty close. At least its compiling.

     

    The biggest problem has been with boost and getting the correct version of boost installed, since CentOS doesn’t seem to work.

     

    I do

     

    wget http://downloads.sourceforge.net/boost/boost_1_55_0.tar.bz2

    tar -jxvf boost_1_55_0.tar.bz2

    ./bootstrap.sh --prefix=/usr && ./b2 stage threading=multi link=shared

    then as root

    ./b2 install threading=multi link=shared

    then

    cd /dogecoin/src/

    make -f makefile.unix dogecoind

     

    And it compiles correctly (at least on my machine) but trying to ./dogecoind gives me

    ./dogecoind: error while loading shared libraries: libboost_system.so.1.55.0: cannot open shared object file: No such file or directory

     

    Ok, so I’ve fixed these errors by copying the correct libraries in /lib64/ but now I get

     

    ************************

    EXCEPTION: 9key_error

    CKey::CKey() : EC_KEY_new_by_curve_name failed

    dogecoin in AppInit()

     

    terminate called after throwing an instance of 'key_error'

     what():  CKey::CKey() : EC_KEY_new_by_curve_name failed

    Aborted

     

    So it turns out that CentOS and Fedora don’t come with EC in openssl. So I have to rebuild openssl. This does not sound like fun.

     

    ----- Some more hours pass -----

    Ok, so I’ve taken the method for installing bitcoind on CentOS that is found here: (https://bitcointalk.org/index.php?topic=65818) and modified the files to work for dogecoind.

     

    https://github.com/mikeminneman/dogecoind-centos

     

    Use those files to get yourself started. Please feel free to contact me if you need any further help on reddit at http://www.reddit.com/u/earcaraxe

     



  4. How To Actually Find A Job

    May 25, 2013 by Mike

    Intro

    Since the economic recession in 2008, we’ve seen a serious decrease in the number of jobs available. Companies slashed budgets and had massive layouts, and instead of rehiring have found ways to keep things “more efficient” and get more work out of the employees that they had left. The growth in the number of people who go to colleges and universities means that students are paying more money in order to get less valuable degrees. There’s high competition in almost every field, and not enough jobs. Corporations and banks are getting wealthier, but job prospects for the lower and middle classes are looking bleaker.

    Competition for jobs is extremely high, and the old models of applying for jobs have changed. No longer can you just send out resumes to companies and hope for a job, because that resume just goes into a heap of other resumes sitting on the floor. Career fairs are a good starting point, but even that’s not the best way to get hired. If you want to find a job, being just another face in the crowd isn’t going to cut it. So what’s the secret to job hunting?

     

    Sales

    Sales is a dirty word. It conjures up images of used-car salesmen and infomercial pitchmen attempting to sell things that nobody needs to people who really could be using their money better on something else. However when you are hunting for a job, you can’t be going in with the mindset that somebody owes you a job. If you’re thinking “IBM is a huge corporation, and I spent all this money to study computers, they owe me a job,” then you’re approaching this with the absolute wrong attitude. Looking for a job is not YOU asking THEM to give you a job. It’s YOU giving THEM a product (your time and effort) in exchange for their money. Job hunting isn’t about receiving, it’s about delivering.

     

    What are you selling?

    If you want someone to give you money to work for them, then you need to provide them with something that is worth more to them than the money you are giving them. You need to have something of value. Typically job listings are like a want ad. The company is listing that they want something and are willing to pay for it. It’s sort of a reverse eBay. When you find somebody looking for something that you’re selling (your skills), then you can begin to approach the sale. Let’s say you meet the requirements of the job posting - great - you have a product you can sell to them. However, other people will be applying to the same position, and attempting to sell the company or hiring manager on themselves as well. Questions you should be asking yourself are:

    • How can I provide a better product than the other people applying? Do I work harder? Do I work smarter? Do I have specific experience that is relevant? Etc.

    • How can I sweeten the deal? Am I more local? Can I take a lower pay? Am I single an can work more hours, or am I married and can prove commitment?

    • What sets me apart from other people? If we’re all selling the same or similar skillsets, what can I bring to the table that’s a differentiating factor? Do I have a unique experience - like living abroad or speaking another language? What do I have that can set me apart in the minds of the people hiring?

     

    Making a personal connection

    Good salesmen make a personal connection. Communicating with you breaks you out of the business-only transaction that’s taking place. They attempt to find common ground with you, and ask you questions about yourself and attempt to relate. They attempt to become your friend or at least an acquaintance. If you know somebody as a person instead of as a faceless corporate representative, you’re much more likely to trust them, and to feel like they have your best interests at heart.

    You need to make a personal connection with your interviewers, with the people in the office when you’re waiting for an interview, etc. Talk to the secretary in the waiting room. If you charm people and turn them into your friends, they’re much more likely to vouch for you. If everyone who applies sits nervously, and one person is at ease and making friends in the company, then the people at the company already know that that one friendly outgoing person is going to be a closer match based on personality than somebody who was cold and a dead fish.

     

    Referrals and networking

    Personal connections also lead to referrals. It’s important to go out and make friends in the industry or a related industry to the one you’re attempting to find a job in. For programmers, a lot of companies throw events where like minded people can come together and meet. A hackathon or a conference or a seminar are places that you can show off your talent, but more importantly make important connections to people in the industry.

    Even if people you meet aren’t hiring, if they like you and you keep in touch with them, they may know somebody who is hiring for a position that meets your skillset. Personal referrals are one of the most powerful ways to get a job. Who would you hire, if you had two equally qualified resumes on your desk, and your best friend says “You should hire Person A, because I met him and he’s a great guy”. Most rational people would hire the person they’ve received a recommendation for, because they trust the referring friend’s opinion.

     

    Conclusion

    The days of passively sending in a resume to a number of companies blindly is over. In order to get a job, you need to provide value, stand out, and make a personal connection. Building a network of intelligent people in the industry is a great way to get referred into a job position. By thinking with a “How can I provide value in exchange for money” attitude instead of a “I studied for four years and I deserve a job” attitude, you’ll greatly increase your chances of getting hired.




  5. Building a website with no experience or budget

    January 2, 2013 by Mike
    I build websites for a living. I mostly get paid to build websites for people. However there are a lot of people who either arent able to afford my services, or they're interested more in my advice about how to build a website themselves. There are a lot of free services that allow people to build websites on their own. I've decided to write a few articles that teach you how to build a nice looking website on your own with limited resources, in your spare time.

    What software should I use?

    There are a lot of different bits of software out there that all allow you to build a website. There's stuff like coda, dreamweaver, eclipse, frontpage, and other pieces of software that allow you to edit HTML and CSS and PHP. These are not going to be particularly useful for you at this point unless you've studied these languages. Also, most of what I have used these tools for is similar to what I could use notepad to do, although they do it in a much nicer way.

    So, skipping over those tools, I'd suggest using a tool that allows you to download themes and plugins and edit content right over your browser. This is called a Content Management System, or CMS. I've used weebly, Drupal, Joomla, and WordPress, and I've heard of others such as site build it. I highly recommend using WordPress to build your website and the reason is that it handles both blogs and static websites tremendously well. It's free software and runs a huge percentage of websites on the Internet. Because it is so popular, it is very well supported and there are a wide variety of themes and plugins to allow you to easily do just about anything. I would caution against using WordPress for an ecommerce store, but building a shopping cart is beyond the scope of what I want to cover in this article series.



  6. Why I Hate Apps

    November 8, 2012 by Mike


    I absolutely loathe and detest the word "App". Whenever anybody says it I die a little bit inside. It's very similar to how I used to feel about the term "Web 2.0". Apps are just the current fad. I'm constantly bombarded by articles about some asshole or other who made a million dollars by publishing some bullshit "App" in the "App Store".

    App is just short for Application, which has been in the computer lexicon for decades. It's pretty much just another way of saying "Program", or "Piece of Software". Whenever someone approaches me by saying "I had a great idea for an App..." I scream in my head at them and fight back the impulse for murder. Now, if someone approached me and said "I had a great idea for a program..." I'd actually take them seriously.

    I think my issue with App is that it's this bullshit yuppie slang invented by "App"le. I mean seriously, I understand that the word Application is pretty long and could be shortened. But Apple's created this whole concept. Not only have they shortened the word Application, but they've shortened the whole program. Now it's just a fancy little icon that you pay $0.99 for that does fuck all once you've put it on the phone. They're mostly good for wasting time while you're taking a dump.

    Now every prick in line for a latte at Starbucks thinks they can make a million dollars by spending $3000 hiring Indians to write code and then unleash their horseshit on everybody who has a smart phone, which is everyone.

    And just like that, Apple commoditized, yuppified, and took all of the remaining dignity out of programming as a profession.



  7. How To Handle A Server Hacking

    November 6, 2012 by Mike

    I had an issue with one of my servers going down repeatedly. This is very bad news for someone like me who makes a living as a web developer. Hosting websites and keeping my pages up and my clients happy is something that is very important to me, and when a server goes down, my clients are not happy and I am not happy.

    I took a look at the server and the issue was that all of the available hard drive space had been used up. I deleted a bunch of files and cleared up several gigabytes of space. A couple of days later the server went down again. Same issue.

    I also got an email regarding spam emails being sent from one of my IP addresses. I went looking for the largest files and directories on my server and discovered that my mail logs had been going crazy. I discovered then that my server had been compromised to send spam email.

    Even worse.

    I set about looking to discover what I could. I searched google because I know that sometimes hackers like to post about their accomplishments, sometimes hackers work in teams with other hackers and leave their chat logs open and searchable to the internet. I took a look through google and discovered a conversation showing how they had gotten into my server. I discovered that I had stupidly left an old account on that I had created for a customer that had the same username and password based on a dictionary word. I realized that I was an idiot.

    I searched around and did what I could. Deleted the mail queues. Deleted the logs. Deleted extra users. Deleted the insecure user. Yet still my server continued sending email. I looked through the crontabs for all users and couldn't find any processes or scripts. I then asked for help.

    I found a very skilled programmer on twitter named @wh1zzz0 and approached him for help. He helped me go through and secure my server and then also showed me how to search for rootkits. A rootkit is something that a hacker can leave on a server for him to gain access later even if you've changed your passwords.

    He told me about rkhunter (short for rootkit hunter), which is a piece of software that allows you to search your server for rootkits.

    I downloaded and installed rootkit hunter from sourceforge: http://rkhunter.sourceforge.net/

    Installing and running this searched for hundreds of commonly used rootkits and helped me discover the source of my problems.

    I hope that my mistakes may help someone else learn and protect their server in the future.



  8. I'm Done Just Building Websites!

    October 10, 2012 by Mike
    I don’t want to build websites anymore. There, I said it. I’m tired of putting time and effort and knowledge into making a pretty little storefront or a cute little portfolio. I’ve built too many websites for small or medium sized companies or individuals which never get used. Everyone’s told that they’re supposed to have a website for whatever venture they’re going with. If you don’t have a URL to put on your business card, you’re not considered legitimate anymore. Problem is, everyone’s got a website. The thing is, not everyone has a successful website. People are missing the entire point of having a website.

    What is it I want to build, then? Communities. The websites that I’ve worked on that have truly been successful are based around building a community or a group of people. These communities don’t always have to be people commenting and interacting with each other directly on the website. Not every website needs to be social media web 2.0 tagging liking friending commenting in order to be a community. Some communities are based around a single voice that puts out information, like a blog or an e-mail newsletter. Some communities ARE based around people sharing and talking with each other; forums can be incredibly useful for these purposes. Regardless of the interaction, whether the interaction is one-to-many, many-to-one, or many-to-many, the website is only a tool for people to interact.

    So, I’m past the point where I want to just build isolated billboards in the desert. I want to build online towns and cities. Why does newegg get so much business? It’s because there’s a community of users that has grown around newegg that purchase their products. Newegg isn’t a discussion forum or a blog, but it definitely has a community nonetheless. A group of people who when they’re hanging out say “Hey, look at what I bought of newegg the other day...”. I want to build sites that are not only a joy to use, but cause people to join together.

    I hope that you’ll all join me.



  9. Road Trip – LA to NY

    August 28, 2012 by Mike
    On a train north out of Eastbourne, a grumpy-looking lady sits across from me gazing out the window, watching the landscape go past angrily, as if the world has wronged her in some way. The last few weeks for me have been exceedingly interesting and crazy. I packed up in Santa Monica, put them all into a trailer, and headed off east a couple of Sundays ago with my dad and everything that I own, kicking off an exciting trip around the world. We drove through desert the first day, sand, dirt, cactuses, 108 degree heat and even some rain. We passed Las Vegas, screamed through Utah, and wound up in a desert town for dinner. Got to a hotel in Colorado for the night where a drunken redneck and his dog were sitting outside to greet us. The second day was filled with rain. Driving up steep Denver mountains in second gear to carry the trailer up, I drove through torrential rain. Whenever I went to make a lane change, the first end would lift up and I would hydroplane for a few terrifying seconds. I gunned it to Frisco to meet a friend in the afternoon and almost completely ran out of fuel. After a short visit, finished crossing Colorado into Kansas. That night when I tried to check into the hotel room, an elderly man at the counter took twenty minutes to struggle with the computer to check me in. That night I stayed up talking to Dan-Tam and asked her to be my girlfriend on official terms. I've been incredibly happy since.I The third day started off with Kansas. It sucked. In the afternoon we crossed into Missouri, Saint Louis, Illinois, Indiana, and into Kentucky for the night on my grandmother's farm, and on the Fourth day we rested. The fifth day my father and I crossed Kentucky, West Virginia, Maryland, and Pennsylvania. I spent a couple of nights at my parents' and then went to New York city to depart for Budapest by way of Brussels.



  10. Putting Together A Computer From Parts

    June 26, 2011 by Mike
    When I was younger, one of my first forays into computer technology was building a desktop with my father. We did research and looked up all of the parts, figured out what we wanted to buy, purchased a case, the parts, and put it together over a weekend. Building your own computer is something that's actually kind of deceptively simple, but it's something that's very cool and gives you a totally different feeling of ownership over the hardware you're using.

    I'm writing this post because I saw somebody posted it on reddit, and I wanted to answer his question in a little more detail than the comments provided. I'll be linking to my site on the comments, but I want to answer his question fully. His post was:

    -----

    I've been wanting too get a new computer for a while now, because my family's desktop is very bad and slow for gaming and rendering. My friend online has helped me find parts for the desktop I want to build, but I don't know how to finish finding compatible parts. Here is the list:

    Processor $105 http://www.newegg.com/Product/Product.aspx?Item=N82E16819103921

    RAM $45 http://www.newegg.com/Product/Product.aspx?Item=N82E16820145218

    Motherboard $110 http://www.newegg.com/Product/Product.aspx?Item=N82E16813157244

    Hard Drive $40 http://www.newegg.com/Product/Product.aspx?Item=N82E16822136770

    I'm not sure what else the computer will need, other than a graphics card and monitor. Can someone teach me?

    -----

    He's pretty much got the basics down. It's been a long time since I've built a desktop, but there's a few parts that you'll need at a minimum:

    Processor

    Motherboard

    RAM

    Hard Drive

    Power Supply

    Case

    Graphics Card

    Video Card

    Processor is the brains of the computer. They're typically around $100 for a decent one. The more money you put in, the better you'll get. These typically have a couple of different measurements of performance.

    1. Cores. Cores are basically other processors that are on the chip. If it's a dual core processor, it is essentially two processors in one. If it is a quad core, it is essentially 4 processors. This allows the computer to multitask, or to run multiple programs at once.

    2. Cache. Cache is memory that is available to the processor directly for read/write information. If the Cache is small, it will slow down the processor, as if it runs through all the stuff in the cache, it may take time to replenish the cache. Don't skimp on the cache. It's probably better to get a slightly slower processor with more cache, than a faster processor with less cache.

    3. Speed. Speed is typically measured in Gigahertz. The larger the number, the faster the processor. It seems that most of the processors have kind of slowed down in the past 5 years, and the development is in loading multiple cores on a chip.

    The Motherboard the piece of the computer that links all of the other parts of the computer together. The things that you need to check while choosing a motherboard is that you need to make sure that the processor is compatible with the motherboard. Typically there will be a list of compatible processors in the literature accompanying a motherboard. The second thing, is that you need to check that the ram you're looking to purchase is compatible with the motherboard as well. There are many different types of RAM, and you want to make sure that the type of RAM you purchase is compatible with the motherboard. Again, check the literature on your motherboard.

    The Hard Drive, is the storage for the computer. There are two basic measurements for a hard drive:

    1. Size - This is typically in Terabytes these days. Obviously, the more storage space, the better. If you're building a new computer these days, it probably doesn't make sense to purchase anything that's less than half a terabyte. (500 gigabytes is half a terabyte)

    2. Speed - Hard drives have a read speed, typically measured in seek time in milliseconds. There's also an RPM speed. You do not want a large hard drive with a slow RPM, or it will slow down all of the operations on your computer, no matter how fast your processor is.

    The Graphics Card is something that can be built into the motherboard. If your motherboard has a built-in graphics card, you don't necessarily need to purchase a new graphics card. If you are planning on playing games, then you won't want to use a motherboard integrated graphics card. The major players in the graphics card industry are ATi and nVidia. These are typically very high quality products. It used to be that graphics cards were only measured in RAM, but now graphics cards have their own onboard processors called GPUs. The main measurements for a graphics card are going to be the speed of the GPU and the amount of ram it has. It is my experience that graphics cards are constantly coming out, and it is difficult to keep on top of it. Check for reviews of cards to see what you will need. Typically video games will tell you what kinds of video cards will work best with the game.

    The sound card is something that is typically now integrated on most motherboards. You can always purchase a sound card however if you need more advanced features that aren't provided on your motherboard.

    You'll also need a power supply. Power supplies come in different wattages. Your motherboard will tell you what wattage is required to run all of the devices. DO NOT use a power supply that has less available power than is required. Also, check to make sure that the power supply has a connector that will work with the power plug on the motherboard. It will typically tell you a number of pins that the power connector needs, along with a wattage. Just make sure to match these and you won't have a problem.

    Cases are important, because you need to put everything in a case. Cases have a type, and motherboards have a type. There used to be like, AT, and ATX. You can't mount an ATX motherboard to an AT case, or vice versa. Make sure to match the motherboard to the case type. You will also typically need to purchase fans and install them in the case as well, to provide adequate cooling. There are a number of different cases to meet any stylistic preference.

    I hope that this has been a good overview of the different parts of the computer and what you need to check to make sure that they are compatible. As far as the specific parts that the original poster selected, I would say:

    The processor is a Socket AM3, and the motherboard matches the AM3 type socket. These are compatible. The ram is 240pin DDR3, and the motherboard accepts 4 240 pin RAM slots, so this should also be compatible. It says memory standard (DDR3 1333/1066/800) and the ram selected is DDR3 1333. This should also be compatible. The hard drive connector type is SATA, although I'd recommend choosing a bigger one since it's only 320gb. The motherboard also takes SATA, so this is compatible.

    There is an onboard videocard and sound card on this motherboard, so he doesn't actually need to purchase a sound cards or video cards. If he does want more power, he needs to select a Video Card with that is of type PCI Express 2.0 x16, to get the most out of it.

    For a power supply, NewEgg suggests purchasing the motherboard together with a Thortech Thunderbolt 650W Power supply, and suggests a combo. The link is here http://www.newegg.com/Product/ComboDealDetails.aspx?ItemList=Combo.660456

    Anyway, Good Luck, feel free to ask questions in the comments.