<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/atom10full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-us"><title>www.mronge.com latest posts</title><link href="http://www.mronge.com" rel="alternate" /><id>http://www.mronge.com</id><updated>2010-03-08T20:31:50-05:00</updated><subtitle>the latest blogposts</subtitle><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/atom+xml" href="http://feeds.feedburner.com/mronge" /><feedburner:info xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" uri="mronge" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><entry><title>reMail now open source, uses MailCore on the iPhone</title><link href="http://www.mronge.com/2010/03/08/remail-now-open-source-uses-mailcore-on-the-iphone/" rel="alternate" /><updated>2010-03-08T20:31:50-05:00</updated><id>http://www.mronge.com/2010/03/08/remail-now-open-source-uses-mailcore-on-the-iphone/</id><summary type="html">


	&lt;p&gt;Exciting news from &lt;a href="http://www.remail.com"&gt;reMail&lt;/a&gt;! reMail has been acquired by Google and reMail is now open source!&lt;/p&gt;
&lt;p&gt;This means that MailCore for iPhone is now available as part of the &lt;a href="http://code.google.com/p/remail-iphone/"&gt;remail-iphone project&lt;/a&gt;. MailCore code has been compatible with the iPhone, but because Apple doesn&amp;#8217;t allow iPhone apps to link against OpenSSL or CyrusSASL, using MailCore has been non-trivial. &lt;a href="http://www.gaborcselle.com/"&gt;Gabor Cselle&lt;/a&gt; has done the hard work for us by including OpenSSL and CyrusSASL dependencies and providing his work under the Apache license.&lt;/p&gt;
&lt;p&gt;My hope is that this will spur new IMAP/SMTP apps now that it&amp;#8217;s easy to use MailCore on the iPhone. In the future I&amp;#8217;d like to make this even easier by pulling in some of reMail&amp;#8217;s MailCore changes, but for now check out &lt;a href="http://code.google.com/p/remail-iphone/"&gt;remail-iphone&lt;/a&gt;&lt;/p&gt;






	&lt;a href="/2010/03/08/remail-now-open-source-uses-mailcore-on-the-iphone/"&gt;
		[comments]
	&lt;/a&gt;


</summary></entry><entry><title>Announcing Rocketbox &amp;amp; Central Atomics</title><link href="http://www.mronge.com/2010/02/10/announcing-rocketbox-central-atomics/" rel="alternate" /><updated>2010-02-10T19:43:33-05:00</updated><id>http://www.mronge.com/2010/02/10/announcing-rocketbox-central-atomics/</id><summary type="html">


	&lt;p&gt;Stupid me&amp;#8230; I just realized I never announced the launch of my new company here! I&amp;#8217;ve been so busy shipping Rocketbox, sending out press releases and answering support e-mail, that I forgot about my lonely blog!&lt;/p&gt;
&lt;p&gt;I&amp;#8217;ve built a search add on to Mail.app I call &lt;a href="http://www.getrocketbox.com"&gt;Rocketbox.&lt;/a&gt;. It provides more powerful search with handy features like person auto completion. If you&amp;#8217;re the kind of person that uses search a lot, make sure to check out Rocketbox!&lt;/p&gt;
&lt;p&gt;Along with Rocketbox, I&amp;#8217;ve setup a new company I call Central Atomics to house my new product. So go check out &lt;a href="http://www.getrocketbox.com/"&gt;Central Atomics and Rocketbox&lt;/a&gt;&lt;/p&gt;






	&lt;a href="/2010/02/10/announcing-rocketbox-central-atomics/"&gt;
		[comments]
	&lt;/a&gt;


</summary></entry><entry><title>Nasty hacking with 64-bit Objective-C</title><link href="http://www.mronge.com/2009/09/10/nasty-hacking-with-64-bit-objective-c/" rel="alternate" /><updated>2009-09-10T21:05:35-05:00</updated><id>http://www.mronge.com/2009/09/10/nasty-hacking-with-64-bit-objective-c/</id><summary type="html">


	&lt;p&gt;If you&amp;#8217;re loading code dynamically and using an unsupported API under Cocoa 64bit, you&amp;#8217;ll be greeted with this unpleasant surprise:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;9/7/09 2:34:06 PM   Mail[8641]  MailTest.mailbundle failed to load. The error was:
Error Domain=NSCocoaErrorDomain Code=3588 UserInfo=0x100563840 "The bundle “MailTest” couldn’t beloaded."
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;After many hours of slamming my head against the desk, and help from others (namely &lt;a href="http://erikhinterbichler.com/"&gt;Erik Hinterbichler&lt;/a&gt;, I&amp;#8217;ve figured out how to get around this error. Why would you want to do this in the first place? Well, it&amp;#8217;s useful for creating addons to closed source products like Mail.app and Safari. The usual procedure involves dumping the headers for the app using &lt;a href="http://www.codethecode.com/projects/class-dump/"&gt;class-dump&lt;/a&gt;, determining how to swizzle your code in, and finally figuring out how to load your code into the app. &lt;/p&gt;
&lt;p&gt;With the switch to 64bit, Objective-C has a new dynamic loader that pays attention to symbol visibility. The 32bit loader didn&amp;#8217;t, and would allow your code to bind to any symbol in the app. With the 64bit loader, only symbols that are explicitly exported are available for dynamic binding. As a result, nearly all the symbols in an app like Mail.app aren&amp;#8217;t exported for binding. If you do try to bind, you&amp;#8217;ll see that error message above.&lt;/p&gt;
&lt;p&gt;So what&amp;#8217;s the trick? Never reference any of the symbols directly! Instead you&amp;#8217;re going to us &lt;code&gt;NSClassFromString&lt;/code&gt; along with the Objective-C runtime methods available from the header &lt;code&gt;&amp;lt;objc/runtime.h&amp;gt;&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Here&amp;#8217;s how I now set the super class for a Mail.app plugin:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;+ (void) initialize {
    class_setSuperclass([self class], NSClassFromString(@"MVMailBundle"));
    [MattsMailBundle registerBundle];
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Notice, this is done in the &lt;code&gt;initialize&lt;/code&gt; class method, and no Mail.app symbols (in this case &lt;code&gt;MVMailBundle&lt;/code&gt;) are referenced directly.&lt;/p&gt;
&lt;p&gt;Hope that helps, happy hacking!&lt;/p&gt;






	&lt;a href="/2009/09/10/nasty-hacking-with-64-bit-objective-c/"&gt;
		[comments]
	&lt;/a&gt;


</summary></entry><entry><title>→ 13 more things that don&amp;#39;t make sense</title><link href="http://www.newscientist.com/special/13-more-things?DCMP=OTC-rss&amp;nsref=online-news" rel="alternate" /><updated>2009-09-03T14:08:53-05:00</updated><id>http://www.newscientist.com/special/13-more-things?DCMP=OTC-rss&amp;nsref=online-news</id><summary type="html">


	&lt;p&gt;Thirteen scientific mysteries each with articles. I absolutely love this kind of reading. It&amp;#8217;s easy to forget how much we don&amp;#8217;t know about the universe.&lt;/p&gt;




	&lt;a href="http://www.newscientist.com/special/13-more-things?DCMP=OTC-rss&amp;amp;nsref=online-news"&gt;
		[link]
	&lt;/a&gt;





	
</summary></entry><entry><title>→ Urinal protocol vulnerability</title><link href="http://blag.xkcd.com/2009/09/02/urinal-protocol-vulnerability/" rel="alternate" /><updated>2009-09-02T13:56:37-05:00</updated><id>http://blag.xkcd.com/2009/09/02/urinal-protocol-vulnerability/</id><summary type="html">


	&lt;p&gt;A tongue in cheek take on the math behind choosing a urinal in the mens bathroom. Just read it, it&amp;#8217;s funny.&lt;/p&gt;




	&lt;a href="http://blag.xkcd.com/2009/09/02/urinal-protocol-vulnerability/"&gt;
		[link]
	&lt;/a&gt;





	
</summary></entry><entry><title>→  The bar for success in our industry is too low</title><link href="http://37signals.com/svn/posts/1890-the-bar-for-success-in-our-industry-is-too-low" rel="alternate" /><updated>2009-09-02T13:39:30-05:00</updated><id>http://37signals.com/svn/posts/1890-the-bar-for-success-in-our-industry-is-too-low</id><summary type="html">


	&lt;p&gt;&amp;#8220;This pattern — “success” based on forecasted future success instead of current success — shows up all 
over in the tech-business press &amp;#8230; If there was an airline that flew more &gt; passengers than anyone 
else, but lost money on each one, would we call it a success? If there was a restaurant that served 
more people than anyone else, but lost money on each meal served, would we call it a success?&amp;#8221;&lt;/p&gt;
&lt;p&gt;Amen. I&amp;#8217;m tired of all the worshiping of startups/business that don&amp;#8217;t actually make money&amp;#8230; &lt;cough&gt;Facebook, Twitter&lt;/cough&gt;&lt;cough&gt;&lt;/cough&gt;&lt;/p&gt;




	&lt;a href="http://37signals.com/svn/posts/1890-the-bar-for-success-in-our-industry-is-too-low"&gt;
		[link]
	&lt;/a&gt;





	
</summary></entry><entry><title>Mini book review on Making of the Atomic Bomb</title><link href="http://www.mronge.com/2009/08/31/mini-book-review-on-making-of-the-atomic-bomb/" rel="alternate" /><updated>2009-08-31T19:01:15-05:00</updated><id>http://www.mronge.com/2009/08/31/mini-book-review-on-making-of-the-atomic-bomb/</id><summary type="html">


	&lt;p&gt;Posted it to my reading section. Take a &lt;a href="/r/"&gt;look&lt;/a&gt;. Summary: If you&amp;#8217;re into physics go buy it, it&amp;#8217;s an excellent book.&lt;/p&gt;






	&lt;a href="/2009/08/31/mini-book-review-on-making-of-the-atomic-bomb/"&gt;
		[comments]
	&lt;/a&gt;


</summary></entry><entry><title>→ The Wysiwym Markdown Editor</title><link href="http://wmd-editor.com/" rel="alternate" /><updated>2009-08-31T12:11:05-05:00</updated><id>http://wmd-editor.com/</id><summary type="html">


	&lt;p&gt;A simple, clean Markdown editor I stumbled across today.&lt;/p&gt;




	&lt;a href="http://wmd-editor.com/"&gt;
		[link]
	&lt;/a&gt;





	
</summary></entry><entry><title>→ Top 10 tips to a new django developer</title><link href="http://blog.dpeepul.com/2009/08/31/top-10-tips-to-a-new-django-developer/" rel="alternate" /><updated>2009-08-31T11:41:52-05:00</updated><id>http://blog.dpeepul.com/2009/08/31/top-10-tips-to-a-new-django-developer/</id><summary type="html">


	&lt;p&gt;A good top ten list of Django tips. Many of these took a while for me to learn on my own. Recommended reading&lt;/p&gt;




	&lt;a href="http://blog.dpeepul.com/2009/08/31/top-10-tips-to-a-new-django-developer/"&gt;
		[link]
	&lt;/a&gt;





	
</summary></entry><entry><title>A hacker&amp;#39;s easy dinner: Vegetarian Tacos</title><link href="http://www.mronge.com/2009/08/13/a-hackers-easy-dinner-vegetarian-tacos/" rel="alternate" /><updated>2009-08-13T22:35:02-05:00</updated><id>http://www.mronge.com/2009/08/13/a-hackers-easy-dinner-vegetarian-tacos/</id><summary type="html">


	&lt;p&gt;I&amp;#8217;m adding some simple recipes that are, potentially, useful for fellow computer hackers. Most of these recipes are great for getting dinner out of the way, without resorting to a fast food trip.&lt;/p&gt;
&lt;p&gt;My first recipe: tacos made with a vegetarian ground beef substitute. I&amp;#8217;m not a vegetarian, but the soy protein substitute is faster and easier to make. I usually grab a few bags of ground beef substitute and keep them in the freezer for when I want to throw something quick together.&lt;/p&gt;
&lt;h3&gt;Ingredients&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;2 - 3 Tbsp Olive Oil&lt;/li&gt;
&lt;li&gt;Small onion&lt;/li&gt;
&lt;li&gt;2 cloves garlic&lt;/li&gt;
&lt;li&gt;1 bag Morningstar Grillers Crumbles OR Boca Ground Crumbles&lt;/li&gt;
&lt;li&gt;1/4 tsp Cayenne Pepper&lt;/li&gt;
&lt;li&gt;1/2 tsp Chili Powder&lt;/li&gt;
&lt;li&gt;Salt &amp;amp; Pepper&lt;/li&gt;
&lt;li&gt;Corn tortillas&lt;/li&gt;
&lt;li&gt;Toppings (cheese, salsa, tomato, lettuce, etc&amp;#8230;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Directions&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;Heat up a skillet with the Olive Oil.&lt;/li&gt;
&lt;li&gt;Dice the onion and add it to the skillet&lt;/li&gt;
&lt;li&gt;While the onion is cooking, mince the garlic and add it&lt;/li&gt;
&lt;li&gt;Cook the onion and garlic until the onion looks fairly translucent and it&amp;#8217;s soft, now pour in the bag of crumbles&lt;/li&gt;
&lt;li&gt;Stir around the crumbles, and add the cayenne pepper, chili powder and toss in some salt and pepper. If the pan is really dry, add some more oil&lt;/li&gt;
&lt;li&gt;In less than 5 minutes the crumbles should be ready, meanwhile heat up corn tortillas with the stove or microwave&lt;/li&gt;
&lt;li&gt;You&amp;#8217;re done! Add some toppings I like to eat my tacos with some cheese, tomatoes, and jalapeños. Try mixing it up for some variety&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;It&amp;#8217;s pretty damn tasty, and very easy. Now back to coding!&lt;/p&gt;






	&lt;a href="/2009/08/13/a-hackers-easy-dinner-vegetarian-tacos/"&gt;
		[comments]
	&lt;/a&gt;


</summary></entry><entry><title>Recent Reading List</title><link href="http://www.mronge.com/2009/08/10/recent-reading-list/" rel="alternate" /><updated>2009-08-10T20:17:26-05:00</updated><id>http://www.mronge.com/2009/08/10/recent-reading-list/</id><summary type="html">


	&lt;p&gt;I put a little reading list together on this site where I can make small comments on recent reading and whether or not I recommend the book.&lt;/p&gt;
&lt;p&gt;Take a &lt;a href="/r/"&gt;peek&lt;/a&gt; as I get started with my list&lt;/p&gt;






	&lt;a href="/2009/08/10/recent-reading-list/"&gt;
		[comments]
	&lt;/a&gt;


</summary></entry><entry><title>MailCore 0.2.7</title><link href="http://www.mronge.com/2009/08/10/mailcore-027/" rel="alternate" /><updated>2009-08-10T19:57:20-05:00</updated><id>http://www.mronge.com/2009/08/10/mailcore-027/</id><summary type="html">


	&lt;p&gt;I&amp;#8217;ve finally gotten around to releasing a new version of MailCore&amp;#8230; Since my last release a few patches have been submitted, special thanks to those that sent in patches.&lt;/p&gt;
&lt;p&gt;MailCore is now being used in a few iPhone apps (maybe someone can submit a patch to make MailCore buildable on the iPhone?), and I&amp;#8217;m currently using it for an unannounced product (and no, not Kiwi, something else I&amp;#8217;ve been working on).&lt;/p&gt;
&lt;p&gt;Here is a list of the major changes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Fixed a memory leak found by Stefano Barbato where mime structures weren&amp;#8217;t autoreleased when returned&lt;/li&gt;
&lt;li&gt;Added a new method to CTCoreMessage that can be used to init from a string&lt;/li&gt;
&lt;li&gt;Added proper decoding of unicode characters, w/ test (patch from Julián Romero)&lt;/li&gt;
&lt;li&gt;Updated the examples to work with the latest API&lt;/li&gt;
&lt;li&gt;Fixed a issue with CTCoreMessage where fields were being freed twice&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Grab a prebuilt framework &lt;a href="/m/MailCore"&gt;here&lt;/a&gt; or grab the source from &lt;a href="http://bitbucket.org/mronge/mailcore/"&gt;BitBucket&lt;/a&gt;&lt;/p&gt;






	&lt;a href="/2009/08/10/mailcore-027/"&gt;
		[comments]
	&lt;/a&gt;


</summary></entry><entry><title>Why Not the Best?</title><link href="http://www.mronge.com/2009/08/02/why-not-the-best/" rel="alternate" /><updated>2009-08-02T13:35:48-05:00</updated><id>http://www.mronge.com/2009/08/02/why-not-the-best/</id><summary type="html">


	&lt;p&gt;I had applied for the nuclear submarine program, and Admiral Rickover was interviewing me for the job&amp;#8230; Finally, he asked me a question and I thought I could redeem myself. He said, &amp;#8220;How did you stand in your class at the Naval Academy?&amp;#8221; &amp;#8230; I swelled my chest with pride and answered, &amp;#8220;Sir, I stood 59th in my class of 820!&amp;#8221; I sat back to wait for the congratulations - which never came. Instead, the question: &amp;#8220;Did you do your best?&amp;#8221; I started to say, &amp;#8220;Yes, sir,&amp;#8221; but I remembered who this was &amp;#8230; I finally gulped and said, &amp;#8220;No, sir, I didn&amp;#8217;t always do my best.&amp;#8221; He looked at me for a long time, and then finally turned his chair around to end the interview. He asked one final question, which I have never been able to forget, or to answer. He said, &amp;#8220;Why not?&amp;#8221;&lt;/p&gt;






	&lt;a href="/2009/08/02/why-not-the-best/"&gt;
		[comments]
	&lt;/a&gt;



	
</summary></entry><entry><title>Rickover&amp;#39;s psychological exam</title><link href="http://www.mronge.com/2009/08/02/rickovers-psychological-exam/" rel="alternate" /><updated>2009-08-02T13:27:04-05:00</updated><id>http://www.mronge.com/2009/08/02/rickovers-psychological-exam/</id><summary type="html">


	&lt;p&gt;SHRINK: Do you like your work? &lt;br /&gt;
RICKOVER: No. &lt;br /&gt;
SHRINK: Do you like people? &lt;br /&gt;
RICKOVER: No. &lt;br /&gt;
SHRINK: Are you happy? &lt;br /&gt;
RICKOVER: No.  &lt;/p&gt;
&lt;p&gt;[Shrink pauses, to figure out where to go form here]  &lt;/p&gt;
&lt;p&gt;RICKOVER: Are you going to ask any more damn fool questions? &lt;br /&gt;
SHRINK: No.  &lt;/p&gt;






	&lt;a href="/2009/08/02/rickovers-psychological-exam/"&gt;
		[comments]
	&lt;/a&gt;



	
</summary></entry><entry><title>→ Tail mode in emacs</title><link href="http://www.gnu.org/software/emacs/manual/html_node/emacs/Reverting.html" rel="alternate" /><updated>2009-08-01T16:02:00-05:00</updated><id>http://www.gnu.org/software/emacs/manual/html_node/emacs/Reverting.html</id><summary type="html">


	&lt;p&gt;For you emacs users out there. Try out auto-revert-tail-mode. Open up a log file you&amp;#8217;d like to monitor in emacs and then do M-x auto-revert-tail-mode. Emacs will automatically watch the file.&lt;/p&gt;
&lt;p&gt;I like to open up a small frame and watch log files this way.&lt;/p&gt;




	&lt;a href="http://www.gnu.org/software/emacs/manual/html_node/emacs/Reverting.html"&gt;
		[link]
	&lt;/a&gt;





	
</summary></entry></feed>
