<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
<?xml-stylesheet type="text/css" href="http://localhost/please/edit/me/styles/feed.css"?>


<title type="html">ΔΕΞΑΙ!</title>
<subtitle type="html"></subtitle>
<link rel="alternate" type="text/html" href="http://localhost/please/edit/me"/>
<link rel="self" type="application/atom+xml" href="http://localhost/please/edit/me/atom.xml"/>
<updated>2010-06-07T14:34:52-04:00</updated>
<author>
<name>A Crazed Howler Monkey</name>
<uri>http://localhost/please/edit/me</uri>
</author>
<id>http://localhost/please/edit/me/</id>
<generator uri="http://nanoblogger.sourceforge.net" version="3.4 RC2">
NanoBlogger
</generator>

<entry>
<title type="html">Openvz patch for atop 1.25</title>
<author>
<name>A Crazed Howler Monkey</name>
</author>
<link rel="alternate" type="text/html" href="http://localhost/please/edit/me/archives/2010/06/07/openvz_patch_for_atop_1_25/index.html"/>

<id>http://localhost/please/edit/me/archives/2010/06/07/openvz_patch_for_atop_1_25/index.html</id>
<published>2010-06-07T14:33:11-04:00</published>
<updated>2010-06-07T14:33:11-04:00</updated>

<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
If you've ever wished you could record what openvz container was doing what on
your server, I have something for you.
<br /><br />
Atop has been really useful for me in the past.  I thought, wouldn't it be
nice if I could map openvz containers to their process when looking through an
atop history?  Well, that thought prompted me to write a patch to do just
that.  
<br /><br />
You can get it <a
href="http://www.deksai.com/articles/openvz_patch_for_atop_1_25/index.html">here</a>.
<br /><br />
This will allow you to see what veid a process belongs to.  It will also let
you group processes by veid and sort them based on whatever atop will let you
sort by (cpu, disk, memory etc.).
</div>
</content>

</entry>
<entry>
<title type="html">Getting to BIOS from serial console</title>
<author>
<name>A Crazed Howler Monkey</name>
</author>
<link rel="alternate" type="text/html" href="http://localhost/please/edit/me/archives/2010/03/12/getting_to_bios_from_serial_console/index.html"/>

<id>http://localhost/please/edit/me/archives/2010/03/12/getting_to_bios_from_serial_console/index.html</id>
<published>2010-03-12T13:22:26-04:00</published>
<updated>2010-03-12T13:22:26-04:00</updated>

<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
If you are like me, you've been infuriated by BIOS writers that don't
give you a humane way to get into BIOS from a terminal server.  Most of the
time, the only option they give you is to hit the delete key.  It's just about
guaranteed that what you send when you hit the actual "delete" key on your
keyboard is not going to be what BIOS is expecting.  
<br /><br />
Finally, someone at work dug this out from some somewhere on the 75th page of
a google search. 
<br /><br />
Press esc and then - (the minus key), and it should work.
</div>
</content>

</entry>
<entry>
<title type="html">GSSAPI and Java</title>
<author>
<name>A Crazed Howler Monkey</name>
</author>
<link rel="alternate" type="text/html" href="http://localhost/please/edit/me/archives/2009/12/01/gssapi_and_java/index.html"/>

<id>http://localhost/please/edit/me/archives/2009/12/01/gssapi_and_java/index.html</id>
<published>2009-12-01T20:42:24-04:00</published>
<updated>2009-12-01T20:42:24-04:00</updated>

<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<br /><br />
If you get stuck having to use a Java app in your wonderful Unix Kerberos environment, you may have some problems initially.  You might notice that even though you have asked it to use your ticket cache like so, <pre> com.sun.security.auth.module.Krb5LoginModule required client=TRUE useTicketCache=TRUE </pre>
it still refuses to find a principal.
<br /><br />
This is because it will choke on encryption that isn't des3.  On my personal
laptop which runs Heimdal, I needed to add this to krb5.conf lib-defaults to restrict the
encryption type: <pre>default_etypes=des3-cbc-sha1</pre>
<br /><br />
At this point it will find your pricipal and TGT correctly, and setup an
ecrypted connection.
</div>
</content>

</entry>
<entry>
<title type="html">Frankenkerberos or &quot;Assembling alias enabled kerberos on old crusty Centos servers with common household ingredients&quot;.</title>
<author>
<name>A Crazed Howler Monkey</name>
</author>
<link rel="alternate" type="text/html" href="http://localhost/please/edit/me/archives/2009/09/22/frankenkerberos_or_assembling_alias_enabled_kerberos_on_old_crusty_centos_servers_with_common_household_ingredients/index.html"/>

<id>http://localhost/please/edit/me/archives/2009/09/22/frankenkerberos_or_assembling_alias_enabled_kerberos_on_old_crusty_centos_servers_with_common_household_ingredients/index.html</id>
<published>2009-09-22T23:21:03-04:00</published>
<updated>2009-09-22T23:21:03-04:00</updated>

<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
If you've dealt with kerberos at all, you've maybe dealt with the problem of
hosts with more than one name.  It's a pain in the #$%.
<br /><br />
I've written up a description of my adventure with it in one of those nifty
article links to the left.  You can read it <a
href="http://www.deksai.com/articles/frankenkerberos/index.html">here</a>.
</div>
</content>

</entry>
<entry>
<title type="html">atop patch update</title>
<author>
<name>A Crazed Howler Monkey</name>
</author>
<link rel="alternate" type="text/html" href="http://localhost/please/edit/me/archives/2009/09/09/atop_patch_update/index.html"/>

<id>http://localhost/please/edit/me/archives/2009/09/09/atop_patch_update/index.html</id>
<published>2009-09-09T23:56:13-04:00</published>
<updated>2009-09-09T23:56:13-04:00</updated>
<category term="programming" />
<category term="system-accounting" />
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">

I've made a quick update to the atop IO wait patch.
Nothing big, just some formatting changes, and some checks for errors.
Check the side bar for the link.
</div>
</content>

</entry>
<entry>
<title type="html">AVR RISC intstruction set: LPM &amp; the Z pointer</title>
<author>
<name>A Crazed Howler Monkey</name>
</author>
<link rel="alternate" type="text/html" href="http://localhost/please/edit/me/archives/2009/09/09/avr_risc_intstruction_set_lpm_and_the_z_pointer/index.html"/>

<id>http://localhost/please/edit/me/archives/2009/09/09/avr_risc_intstruction_set_lpm_and_the_z_pointer/index.html</id>
<published>2009-09-09T23:05:32-04:00</published>
<updated>2009-09-09T23:05:32-04:00</updated>
<category term="programming" />
<category term="embedded" />
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<p>
Have you ever had a time where something you've known for a while or read
several times hits you in a whole new way?  Typically it is when you realize another facet of a truth.  Notice I didn't say a new interpretation of truth, but a new facet (this difference deserves a post just by itself).  
</p>
<p>
Anyway, I just had this experience.  It just happened for me with the
Z pointer for accessing flash memory.  In this case, I think I realized that I
wasn't thinking about it at all before.
</p>
<p>

Program memory on these chips is organized in 16 bit words.  The manuals
simply state that:

</p>
<p>
<code>
The 15 most significant bits selects the word address in Program memory.
Because of this, the word address is multiplied by two before it is put in the
Z-register.  The least significant bit of the Z Address Register selects
either Low byte (0) or High byte(1) of the Program memory word

</code>

</p>
<p>
No big deal right?  This instruction just stuffs the result in register 0.
The registers are 8 bits, so you only get half at a time.

</p>
<p>
Here is where I realized that I was a moron....  Typically, you just load up
two 8 bit registers with your address split across both.  Dutifully, you
multiply it by two before hand, load the result, read it, increment the
pointer by one and load the result again to get the second half.  I always
thought that the addresses were somehow indexed at 16 bits, and that lower bit
was somehow magical.  The point is that yes, if you use 15 bits, you
effectively do index by 16, but the addresses really work on chunks of 8 bits.
For some reason they take a really round about way to say that the addresses
work on 8 bit intervals, but the architecture is built to work on 16 bits at a
time from program memory (typically 8 bits for the opcode, and 8 bits for the
operand).
</p>
</div>
</content>

</entry>
<entry>
<title type="html">I miss the old time smart people</title>
<author>
<name>A Crazed Howler Monkey</name>
</author>
<link rel="alternate" type="text/html" href="http://localhost/please/edit/me/archives/2009/09/09/i_miss_the_old_time_smart_people/index.html"/>

<id>http://localhost/please/edit/me/archives/2009/09/09/i_miss_the_old_time_smart_people/index.html</id>
<published>2009-09-09T00:27:26-04:00</published>
<updated>2009-09-09T00:27:26-04:00</updated>

<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<p>
My dad's friend just died, and not too many people noticed.  My only theory as
to why is because they didn't appreciate what he was, or were too caught up in
pointless things to notice.   He was a self taught electronic engineer, who
also taught himself medicine.  He always knew more than the doctors we went
to.  I remember him correctly diagnosing a nerve tumor before the doctors had
any idea what the problem was.  I remember him also telling us what he would
do for my dying Grandpa days before the doctors came up with the same ideas.
I know that he regularly treated himself, because he couldn't stand doctors
(he was mistreated by doctors as a child).  He also studied ancient
literature, not to be a snob, but because he enjoyed it.  The loss of him
isn't the loss of the last smart people, but he was one of the
last old time smart people. 
</p>
<p>

As a child, I knew several of my dad's friends who were similar.  Most of them
are dead now.  I haven't really met anybody that replaces them.  As I
think about it, it makes me sad, because people don't remember the way things
were.  There is a huge disconnect from previous generation, mostly because of
a breakdown of family.  People my age were raised by their peers, so not too
many have a clue about what exists outside of themselves and their generation.
</p>
<p>
I thank God for giving me the privilege of growing up in a real family where I
was able to experience and respect people older than myself.  What I've been
able to experience is seeing how the generations before me were smart in a
different way.  It was their attitude about what they did.  It is precisely
that attitude that made me want to follow in their footsteps, but which I have
been unable to find among my generation.
</p>
<p>
This man was a person who grew up playing with machines and electronics when
much of it was new and exciting.  I can almost picture him sitting in his room
assembling a radio transmitter to communicate with someone in the next state.
This doesn't seem like a big deal.  Today it certainly isn't the same.  Back
then it was a bit more exciting and new.  That isn't what makes it different
though.  The part that makes it different is the way in which people like him
did these things.
</p>
<p>

The old generation did these things because they were fun and they enjoyed
them.  Here is how I think that changed.  These people grew up to be the ones
doing the interesting and astonishing things.  People in the following
generations saw them and how society lifted them up for their intelligence,
and decided that they wanted to be "one of those people everyone thinks is
smart".  So these people grew up to do the same types of things, but no longer
because it was fun, but because they had something to prove.  It became a
competition.  No longer was it simply about enjoying the work of your hands
and mind.
</p>
<p>

This man who just died did the things he did because it was what he grew up
doing and enjoyed.  He had friends who grew up doing the same things, and they
remained friends for their whole life.  People in my generation do the same
things in a frenzy in hopes that someone will praise them.  They aren't
friends to anybody, because they can only think about themselves.  All their
time is spent being around lots of people, and trying to be better than most
of them.
</p>
<p>

When I get in a group of older engineers, there is a calm and relaxing feeling
in the atmosphere.  This isn't the most descriptive way to explain what it is
like to be around them, but it does highlight the immediate difference I
notice compared to people of the same intelligence of my generation.  I can
just sit, listen to them talk, and gain a feeling of excitement in hearing the
minds that dreamed up many of the things we have today.  There's a certain
stability and friendliness in their personalities and thinking that is absent
today.

</p>
<p>
So even though the world will not end because of his death (it won't end for
the loss of any of us, which is a shock to some), I figured I would make
mention of him and his type, if simply so I can pay him a little respect that
I feel was missing.
</p>
</div>
</content>

</entry>
<entry>
<title type="html">pam-abl</title>
<author>
<name>A Crazed Howler Monkey</name>
</author>
<link rel="alternate" type="text/html" href="http://localhost/please/edit/me/archives/2009/08/29/pam-abl/index.html"/>

<id>http://localhost/please/edit/me/archives/2009/08/29/pam-abl/index.html</id>
<published>2009-08-29T00:09:08-04:00</published>
<updated>2009-08-29T00:09:08-04:00</updated>
<category term="programming" />
<category term="system-accounting" />
<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<p>
I nearly forgot to mention that I am maintaining the pam-abl code now.  I
needed this for work, and started making changes, so I figured I would
maintain it.
</p>
<p>
Basically pam-abl is a PAM module that automatically blocks people who fail to
log in correctly more than a few times.  Currently, it just makes it
impossible to log in even with the right password.  The changes I'm making
allow you to do more things like change the firewall, and update a global
database (LDAP) for the sake of other servers on the network.
</p>
<p>
When these changes are done at work, and make sense, I'll unleash/release them
to the public. 
</p>
Here's the <a href="http://pam-abl.deksai.com">link</a>
</div>
</content>

</entry>
<entry>
<title type="html">erlang compile error: X86_LEAF_WORDS undeclared here</title>
<author>
<name>A Crazed Howler Monkey</name>
</author>
<link rel="alternate" type="text/html" href="http://localhost/please/edit/me/archives/2009/08/28/erlang_compile_error_x86_leaf_words_undeclared_here/index.html"/>

<id>http://localhost/please/edit/me/archives/2009/08/28/erlang_compile_error_x86_leaf_words_undeclared_here/index.html</id>
<published>2009-08-28T23:41:05-04:00</published>
<updated>2009-08-28T23:41:05-04:00</updated>

<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
This is easy to fix, you didn't have m4 installed the first time you ran make did
you?  ;-).... make clean;make
</div>
</content>

</entry>
<entry>
<title type="html">WD HD Media Player Fun Facts</title>
<author>
<name>A Crazed Howler Monkey</name>
</author>
<link rel="alternate" type="text/html" href="http://localhost/please/edit/me/archives/2009/06/10/wd_hd_media_player_fun_facts/index.html"/>

<id>http://localhost/please/edit/me/archives/2009/06/10/wd_hd_media_player_fun_facts/index.html</id>
<published>2009-06-10T23:56:10-04:00</published>
<updated>2009-06-10T23:56:10-04:00</updated>

<content type="xhtml">
<div xmlns="http://www.w3.org/1999/xhtml">
<p>
I was recently asked to take a look at customizing a <a
href="http://www.wdc.com/en/products/products.asp?DriveID=572">WD HD media player</a>.
I can't stand TV (I don't even own one), and I don't watch that many movies,
but this little thing is cool nonetheless.  It's tiny, and it runs linux.
To make changes to it, you can make some blind changes to the firmware, and
hope you did it right, or you can hook up a serial cable to the connector on
the inside.
</p>
<p>
You'll need a level converter to convert from RS232 to TTL.  I didn't have one
on hand, but found a handy kit at <a href="http://www.nkcelectronics.com/rs232-to-ttl-3v--55v-convert232356.html">nkcelectronics</a>.  You could bread board it easily enough, or buy a premade cable.  It just depends on what you have around and how much hassle you want.
</p>
<p>
For those of you who are used to running minicom at 9600 baud for other
things, you'll only see gobbly gook.  You need to set up minicom for 115200
8N1.
</p>
<p>
I hooked up a serial cable to the connector inside the device, and started
poking around.  I thought I'd post a few facts about what's on the inside.
<ul>
<li>The hostname is Cynthia</li>
<li>Here's a <a href="files/minicom.cap">list</a> of all the files on the box
as it comes from the factory.</li>
<li>Here is the <a href="files/wdtv.bin">original firmware</a> from the
factory.</li>
<li>Here's a little info on the processor.
<pre>
system type             : Sigma Designs TangoX
processor               : 0                   
cpu model               : MIPS 4KEc V6.9      
Initial BogoMIPS        : 292.86              
wait instruction        : yes                 
microsecond timers      : yes                 
tlb_entries             : 32                  
extra interrupt vector  : yes                 
hardware watchpoint     : yes                 
ASEs implemented        : mips16              
VCED exceptions         : not available       
VCEI exceptions         : not available       
System bus frequency    : 198000000 Hz        
CPU frequency           : 297000000 Hz        
DSP frequency           : 297000000 Hz
</pre></li>
</ul>
</p>
<p>Unfortunately, the proprietary chip they use is what does most of the "stuff" that this box is useful for.  All of the programs that communicate with it are also closed source.  There isn't a good way to say, play a
movie from the command line.  It would be really nice to have a way to simply
control playback.</p>
<p>
Also, another bugger about this thing, is that they stuff the repeat settings
into flash.  That means if you are trying to work around the lack of interface
by jacking right into the IR port with <a
href="http://wdtv.elmarweber.org/index.php/tag/eiri">eirid</a>, every time you
hit the repeat button, it will be one off from where it was last time.  Watch
on the console after you hit the repeat button!  A second or two later, you'll
see it saving the new "config" to memory.  It doesn't actually use this repeat
setting on the next playback, it's just there to annoy you!</p>
<p>
For instance, let's say you programatically press the repeat button once.
This bring you to repeat-1 (repeat this movie).  Now you shut off the power,
turn it back on and try to do the same thing again.  What will you get?
You'll get the next repeat option up, which is repeat all.  If you pull that
movie out, put in a new one and try to hit repeat again, you'll shut off
repeat all together!</p>
<p>
What would make sense here is if that saved setting actually did anything.
That way you could just check the last setting, and leave it if already set.
It doesn't make a difference though, and your movie will not repeat even if
the last repeat setting is stuffed in memory.  I needed to manually change the
video playback mode in the config file (somewhere in /tmp if I remember
correctly).  When you change the file in any way, it is automatically saved to
memory.  So what I did was reset it to no repeat in the file, and then
programatically send the commands to repeat through the IR interface.</p>
<p>
More info on the player can be found <a href="http://wiki.wdtv.org/doku.php">here</a>.
</p>
</div>
</content>

</entry>

</feed>
