tag:blogger.com,1999:blog-72863307837571556442024-03-13T22:32:56.204-07:00Adventures of a Protoss in SeattleMathGladiatorhttp://www.blogger.com/profile/14854942302736663407noreply@blogger.comBlogger137125tag:blogger.com,1999:blog-7286330783757155644.post-83532140071589178972011-09-17T14:42:00.000-07:002011-09-17T14:42:51.851-07:00Why node.js? And Why not?I've been thinking about this recently as I've been coming down from my node.js high (which fluctuates depending on my mood).<br />
<br />
The node.js high is the thrill of two dreams colliding in an orgy of programming goodness (1) sharing code between client and server in a meaningful way and (2) a opinionated stance on IO without threads.<br />
<br />
<b>Sharing is caring</b><br />
For those among us that have dealt with the web, it is very frustrated to have to replicate some business logic and templates between the front-end and the back-end. We have to do this to deliver the best possible customer experience. I've spent a lot of time trying to figure how to make good "write once" Ajax solutions. If you go 100% Ajax, then you fuck up SEO. If you go 100% Back-end, then you realize a less than ideal user experience. If the programming the language is the same down to how data is validated, transformed, and rendered, then the back-end and front-end can share a great deal of business critical code. I believe in the possibility to deliver a 100% "SEO" friendly and Awesome user experience.<br />
<br />
I feel this current division between SEO (what most businesses needs to thrive) and UX (what makes it easier and fluid to use) is difficult to execute on. This is where the general idea of "Server Side JavaScript" delivers some very interesting ideas and potential. While I haven't seen the best platform yet, there is an opportunity to wow us.<br />
<br />
<b>Threads are Hard</b><br />
I like multi-threaded programming for the intellectual challenges it poses, but I feel like they are mostly a waste for a single core. A single CPU can be much better managed the way node.js does it with an event loop (or you can use libev or libevent like a real programmer, yes, yes). Once you get to multi-cores thou, you a really talking about a distributed algorithm. The same intellectual challenges found in multi-threaded programming are isomorphic to those found in distributed algorithms (just with higher latency).<br />
<br />
Hard is bad. I like hard because I'm that nerd in math class that does math problems for fun. Most people want to go home to their kids, play a video, and then get laid after eating a sandwich. I go home to do math (which baffles my wife).<br />
<br />
So, anything that keeps threads away and those hard problems are bay can be seen as nice. I'll be honest, node.js delivers well on this front. I've done some very impressive things with node.js that would make me shutter with threads, and then I load test it; it makes me happy. Out of the box, I get a nice way to express data flow with continuations. It's awesome. No race conditions (unless I'm doing something distributed), No deadlocks, No locks. It just works.<br />
<br />
node.js feels like an Apple product.<br />
<br />
<b>Coming Down from the High</b><br />
JavaScript was not designed for enterprise servers. I'll address this on two fronts, and I'll skip the 1.9GB limit because that's just a detail that real programmers can fix and then submit a patch.<br />
<br />
The first front is that continuation passing of things that may leak has no safety in terms of releasing resources. If I intend to perform some IO and expect the function to hand off control to the continuation I pass, then I would like a guarantee that the continuation is going to be called.<br />
<br />
This is a huge hole. Code written in node.js has to trust node.js 100% since that code surrenders its own control flow. Instead of crashing, node.js can silently hang customers which is not good at all. Having experience this issue more than once, building on node.js now feels like building on sand. Sure, I can go and fix the platform, but it feels like adding duct tape. I'm not sure if trusting node.js 100% is harder than threads or not.<br />
<br />
The second front is type safety. I'll give some background about myself. I started in C which I'd call "moderately typed" because you do stupid things all the type. Then I moved up to C++ which was a little bit better. Then I did a bit of Java, and hated it. Then tried C# 1.0, it was OK. Then I did OCaml, and I loved it. I dabbled in Erlang, skipped it (it didn't make me happy). Did a bunch of C# 3.0+, and I loved it. Did tons of PHP and JavaScript, it was ok.Wrote some ruby junk, it didn't make me happy. I fell in love with Lisp and building things with AST. I found myself content with JavaScript, and I was riding the node.js high. Now I work in Java, and my side-projects are a combination of Java and JavaScript. node.js is my new Perl, and I love it for that. I'd prefer C#, but I don't want to spend $ for Visual Studio nor do I want to do C# without an IDE.<br />
<br />
Having given the litany of my past, I have no investment in either static typing or dynamic typing. Either are fine. However, type safety is very important to me these days. I want to use type safety as way of expressing both the ways things should work and the ways things misbehave. Things misbehave all the time for valid reasons.<br />
<br />
I hate the way Java's try/catch let forces you do a bunch of silly things, but I love the idea that I can use it force myself and others to make sure they considered every case. I hate null because it lets you fuck up so much up. This is one reason I love OCaml's union types. I don't have to program with null. I can give every output of my function a meaningful value that forces the consumer to deal with. I've considered resurrecting my node.ocaml project to work on this, but I'd need to write a highly durable IO story for some of my work which I don't really want to do yet.<br />
<br />
<b>Future</b><br />
There are a bunch of reasons I want to create yet another programming language, mix the things I want in OCaml, make it asynchronous so it compiles to finite state machines, remove null, make it easy to deal with error, make it pretty, add control structures for handling failure, build a better type system, better control over the heap, hook it up to the cloud, make deployment painless.<br />
<br />
The problem with the directions I want to go is that the advances I want are marginally useful and expensive in the grand scheme of things. The things I want are better, but we live in a world which values <a href="http://www.jwz.org/doc/worse-is-better.html">"worse is better"</a>. When I put on the business man hat, then I agree with this statement. When I put on my academic beautiful code hat, then this statement makes me want to go into my cave and be a hermit.<br />
<br />
node.js is worse, but that makes it better. The problems I have now will be patched. After enough investment, people will consider it reliable. People will build reliable libraries. Yet, I want to build stuff and not the platform anymore. While node.js is my new perl replacement (and it's fucking awesome at that), doing hard-core server side stuff for me is going on the back-burner.<br />
<br />
But I wonder, are the gains there real or marginal? I don't know. I do know that node.js (like ruby was) is a risk that could either pay off big (as ruby has) or fizzle out. It depends on you.MathGladiatorhttp://www.blogger.com/profile/14854942302736663407noreply@blogger.com0tag:blogger.com,1999:blog-7286330783757155644.post-67015777732985023392011-09-10T21:50:00.000-07:002011-09-10T22:13:14.720-07:00Why No OCaml?I just saw Kevin Murphy's "Why OCaml?" appear on Hacker News, so I'd thought I'd provide some counter-points to the nine year old article.<br />
<br />
<b>Popularity:</b> I can't hire people to build stuff with OCaml, nor are there many non-finance jobs that pay decent enough to work with OCaml. Besides, JavaScript is kind of sexy and Java is getting closures.<br />
<br />
<b>Type Checking:</b> Java has type checking too, and at the same level of rigor. Java doesn't have the fancy polymorphic type inference thou. I'll be honest, I'm a type inference monkey; I love it. But, after a year, the code is very difficult to read without a bunch of documention to explain what the fuck each thing is. Ok, great, so I don't mind having type annotations. I love C#'s var syntax (didn't Java 7 get this?).<br />
<br />
<b>Compilers:</b> OCaml's compiler is way out of date. Multicore support is lacking. There were some memory limit issues (if I recall).<br />
<br />
<b>Speed:</b> According to the shootout, OCaml is losing to Java. This makes me sad as I was a Java hater. It looks like we live in a C/Java world. I do find the shootout results interesting for Java. This makes me sad because I was <a href="http://blog.mathgladiator.com/2010/09/announcing-nodeocaml.html">invested in OCaml for about a week as I worked night and day on node.ocaml</a>.<br />
<br />
<b>Syntax:</b> I'm older, and more mature now. Now, I like my code to be a bit more verbose and less conflated. I like the idea of having a syntax that makes things a bit over-ly verbose now. This is both because I'm older and need to get things done rather than reverse engineer the syntax, and I need new engineers to get up to speed faster.MathGladiatorhttp://www.blogger.com/profile/14854942302736663407noreply@blogger.com0tag:blogger.com,1999:blog-7286330783757155644.post-78633019814096501602011-09-10T00:07:00.000-07:002011-09-10T00:11:18.016-07:00Technology - Keeping poor people poorTechnology makes us better (mostly).<br />
<br />
It's a simple promise. Someone is going to innovate and solve a problem or optimize an existing problem. This process creates wealth, but it also creates a poverty.<br />
<br />
Let's consider the case of the baker. A baker would mix, kneed, and bake bread. Let's say the price of bread costs one bitcoin and it takes one hour to bake a loaf of bread. The baker has 10 families to feed with their oven. Everyday, the baker gets up and prepares bread in an hour and then loafs around for ten hours to exchange loafs and interact with customers. Each family gets their bread and pays one bitcoin. Now the baker traded ten bit coins for eleven hours of his time. This is good revenue that enables his family to live well in the cottage down the street.<br />
<br />
This lasts about ten years until those families have double. Now, there are twenty families. He doesn't want to spend twenty hours loafing about to bake bread. He has the decision: innovate or expand. He is rather primitive and hires an assistant who then takes over the night shift. Eventually, the assistant gets pissed off about his less than fair wages and then builds his own bakery. Now, the society has two bakers. Years pass again, now there are fourty families. Each baker is stressed and tries the same thing, and the cycle repeats until there are four bakers.<br />
<br />
Now, someone invents a high capacity oven that can bake four loafs per hour. It's a innovation that changes the world. These bakers have a choice since there is more bread than what is needed. The families know of the same innovation and now expect a lower price from the bakers because they are not working as hard. So, they lower the price to half a bitcoin. In lowering the price, they have to increase their volume to maintain their life style. Now, there is competition. Now, location, quality, selection, branding, and other ways to differentiate become a part of equation.<br />
<br />
So, location is the key differentiation. Now to get bread, most families go to the original baker since he is at the heart of the town where most work is. Those other bakers? Well, they are fucked. Now they are unemployed in a useless profession until the families spawn more. Some of them try to work for the original baker who is now dominating the entire market. Each of them know that they can be replaced, so the market losers try to win in the new job market. The baker can't hire everybody, and why should he? Two people working half as hard as they used to satisify the same demand. The employee baker is now making more money what he was making (although not as much as the boss employee) and he is doing less work; he is happy. The other bakers are out in the cold.<br />
<br />
Now, these bakers out in the cold either have to survive the "baker" recession which lasts until the next generation of families pop up. By then, the market mover can hire them as employees. But, it doesn't end as an eight capacity oven comes out just as the families are appearing.<br />
<br />
This is the story we have.<br />
<br />
<b>Lessons.</b><br />
<br />
Technology has the prime directive of making our life better in some way, shape, or form. This has the unfortunate consequence of requiring people to be agile to change. We invent stuff, and sometimes, it changes how we work enough to the point where we are more productive with less of our most precious resource: time.<br />
<br />
If you want to be successful, then be prepared for and anticipate change. I live every day like a super computer is going to do my job tomorrow, and I love it. I'd much rather be camping.<br />
<br />
We should want to be lazy, sitting on a beach, camping in the forest, climbing a mountain, playing chess. We should want these things. Some of us spend so much damn time trying to innovate and put ourselves out of a job that we forget to do the things we are working hard to achieve.<br />
<br />
<b>Course Correction</b><br />
<br />
I'm a huge fan of education, and I love to learn. I'm a fan of any government program to try to take unemployed people and make them useful in other contexts.<br />
<br />
I'd vote for something that reduced the work week from 40 hours to 32 hours yet required the same pay. I know some 40 hour jobs can be done in 4.<br />
<br />
Poor people, by definition, can't change into the roles needed by magic. College is expensive. Computers cost money. Government training programs suck and only prepare people for 1-2 years until the next innovation makes them useless.<br />
<br />
I'd be in favor of sacking a lot of wealthy finance people since I believe they did steal of a bunch of fucking money with stupid rules. I have yet to see how an excel spreadsheet could turn into a robot to do my dishes.MathGladiatorhttp://www.blogger.com/profile/14854942302736663407noreply@blogger.com0tag:blogger.com,1999:blog-7286330783757155644.post-61190814558518907702011-09-02T19:50:00.001-07:002011-09-02T20:22:09.355-07:00Intersecting Lines (The Art of Representing Data)So, <a href="http://www.codinghorror.com/blog/2007/07/the-principle-of-least-power.html">Atwood's Law</a>. Yes, I'm thinking about writing a very light weight computational geometry library in JavaScript. I'm purposely going to target 2D computational geometry because (a) it is 'easier', (b) it can be more readily understood. So, I'm about to start work on the "kernel". I'm about to define a "line".<br />
<br />
Well, how do I do that?<br />
<br />
If I go back to what I taught college algebra students, then a line is<br />
<br />
<b>y = m x + b</b><br />
<br />
Ah, yes, intercept-slope form. Beyond the fact that this is a very easy representation of a line, it is very fucking useless. Why? You can't express vertical lines. Let's look at another version<br />
<br />
<b>(y - y<sub>0</sub>) = (x - x<sub>0</sub>) m</b><br />
<br />
Oh, yes, still useless. Can't express vertical lines. Ok, Ok. Back up, college algebra was apparently a waste of time since it didn't give a meaningful definition of line. Somewhere, probably graduate school, I realized a line a equivalence relationship of some sort. Aha, yes, a general form to a line.<br />
<br />
<b>a x + b y + c = 0</b><br />
<br />
This is way better as I have a complete representation of a line. Yay! Ok, so, let's use it. I can take two of these bastards and solve the system of two unknowns. Ok, what happens when there is no solution?... uh, they are parallel and don't intersect. Ok, so, yes, I find the point at which they intersect. Is this useful? Well, it could be, but I've lost information. Let's look at this equation in vector form.<br />
<br />
<b><i>N</i> (<i>x</i> - <i>x<sub>0</sub></i>) = 0</b><br />
<br />
This would be the normal-i-can't-remember-name-but-similiar-to-plane-equation form. This is a nice and cute representation, but it gives be a really poor way to intersect lines naturally. It has a beautiful explaination thou, basically, the line is a collection of all vectors that are orthogonal to to the normal (when translated to the origin). While this is a useless computational representation, it does tell us something useful about the general form. Namely, N = (a,b); isn't that nice.<br />
<br />
So far, the general form has given us the most bang for our buck. However, it still sucks since this general form is a compressed representation of a line that enables me to (a) check to see if a point is in the line, (b) find more points in the line, (c) find a line that is perpendicular to it. In the platonic world, this set is awesome. However, the real world tend to suck and lines start somewhere. So, let's go back to that vector stuff and consider (briefly) an Affine linear combination.<br />
<br />
<b><i>L(k)</i> = k * <i>P<sub>1</sub></i> + (1 - k) * <i>P<sub>2</sub></i></b><br />
<br />
Is this a line? Well, it only has one variable and it has at least two points. Well, as cute and as insightful as this is; it is still useless. Too many operations.<br />
<br />
<b>L(t) = <i>P<sub>0</sub></i> + <i>D</i> t</b><br />
<br />
This is what I am going to go with. I know where the line starts! I know which direction it is going! It is very easy to intersect two lines! It's easy to compute the normal of the line (use complex numbers to rotate D)! It is trivial to compute new points in the line! As an added bonus, I get rays and segments for free by trapping t in a one dimensional box. Yay!<br />
<br />
<b><span class="Apple-style-span" style="font-size: large;">Moral of the Story</span></b><br />
<br />
There are many ways to represent the same or very similar data. The one you learned first was probably not the best.<br />
<br />
Having been alive for a while, I've learned to try to think ahead of time to find the right representation for the data. That is, after-all, 90% of computing. If spend a bunch of your time writing algorithms, then you are probably doing something wrong.<br />
<br />
Am I making the right decision? Not sure. See, now that I've decided which numbers to actually store. <a href="http://pastebin.com/bbU6Y1g9">I now need to pick between an object, an array, or a composition of arrays.</a> I'll benchmark that since that is part of the core, and it will affect both the performance, readability, and beauty of the code.<br />
<br />
<i>Final Decision: going with readability and the 3rd representation even thou it costs double the CPU cycles. Although, I am impressed with how fast JavaScript is.</i>MathGladiatorhttp://www.blogger.com/profile/14854942302736663407noreply@blogger.com0tag:blogger.com,1999:blog-7286330783757155644.post-71956726686387826202011-08-21T22:29:00.000-07:002011-08-21T22:42:46.146-07:00Using node.js as my Microsoft Word (+Bonjour)I love the fact that node.js works on windows.
<br />
<br />It's super duper cool.
<br />
<br />I wrote yet another markdown processor this weekend as I was kinda out of range of internet to go and import one. I'll fix that later since my version is very weak. I also got a new computer, and I'm doing things a <a href="http://blog.mathgladiator.com/2011/08/new-computer-no-microsoft-office-needed.html">bit different</a>. This should give me an opportunity to solve old problems using new technology.
<br />
<br />The first one is printing files between operating systems. My wife has a printer, and I don't. I could solve my problem by buying a wireless printer, installing bonjour, or a USB stick. I'm too lazy for a USB stick, and I don't print enough to justify a wireless printer. The idea of installing bonjour makes me sick (why, I don't know). So, I made marp.
<br />
<br /><a href="https://github.com/mathgladiator/marp">Marp</a> is simply put an HTTP server + markdown + a template. That's it. But, now I can print from my wife's machine by walking to it. This is kinda sucky, but it solves my problem to the point where I am happy.
<br />
<br />After spending two hours debugging and getting the markdown + template to where I wanted it for the first version, I hooked it up to node.js and a couple of path handlers, and I was done. I have a thing.
<br />
<br />This is why I love programming. When I have problems, I can solve them.
<br />
<br />This is also why I love the potential that is node.js. I can throw things together really fast that do really powerful things (I would call making a custom http server that resides in one file a powerful thing). The language isn't too terrible. The velocity I get is terrific. I can hammer simple things out really quick. The concurrency model is very easy to understand, so I don't have the typical race conditions that I would with threads. I can poop little products (that perform well) out very quickly, so I can iterate.
<br />
<br />I am nervous about doing bigger things with it, but I'm optimistic that the node.js community will figure that stuff out.
<br />MathGladiatorhttp://www.blogger.com/profile/14854942302736663407noreply@blogger.com0tag:blogger.com,1999:blog-7286330783757155644.post-84611008092038637462011-08-20T20:53:00.000-07:002011-08-20T21:20:04.675-07:00New computer, No Microsoft Office NeededSo, I've put together and have a new gaming rig/development machine for home. I'm getting up my linux VM now so I can do the real work (Only need Windows for steam and the volume of game choices, alas, I'm a gamer hooked onto Windows like a damn crack baby).
<br />
<br /><span style="font-weight:bold;">Office Freedom</span>
<br />I neither need nor want Microsoft Office. Yes, I am working on a book. No, I don't need office. I'm using Markdown inside of Notepad++. Thank the heavens I no longer need power point, and if I do, then I'll probably be dead already and burning in the 5th level of hell. I'll be honest, I'm a bit sad about excel. I'll get over it. BUT, we do have node.js for windows now. This, combined with some CSV trickery will serve me very well. The idea of having a cross-platform scripting language that doesn't suck, has closures, and is network ready it very exciting.
<br />
<br /><b>Development Freedom</b>
<br />I don't need Visual Studio anymore since I have no desire to touch C#. It is, in my opinion, toxic for my health. My language at work is Java, but when I come home: OCaml or JavaScript. Now that node.js works on windows, I'll be able to do some very cool shit and have confidence that if my work pans out, I could actually sell it.<div>
<br /></div><div><b>The "Cloud" and my d:\ Drive</b></div><div>Basically, instead of migrating hard-drives and what-not to the new machine or using the network. I'm migrating all my stuff to a USB drive and S3. All my day to day stuff will be in Dropbox, and I'm working on my sync protocol now to mirror the USB drive to S3. It will be very pretty. So, this handles my data.</div><div>
<br /></div><div><b>Data + Tools + Writing Tools = I Win!</b></div><div>What else do I need? Not much, I do say that I'm impressed with Windows 7 as a platform (although I don't want to develop for it anymore). Out of the box, it is pretty and not bad. I haven't had to fix the machine or anything. All the drivers worked. I'm glad I don't have to install a bunch of shit, and I don't want too. I'm only using Windows for games, and I'm getting really good performance in VirtualBox (even with the 2600K).</div><div>
<br /></div><div>Happy, Happy, Joy, Joy</div>MathGladiatorhttp://www.blogger.com/profile/14854942302736663407noreply@blogger.com0tag:blogger.com,1999:blog-7286330783757155644.post-34907043659549437372011-08-11T23:40:00.000-07:002011-08-12T00:05:22.412-07:00New Computer OrderedEver since getting a woman, I've hardly spent anything on myself... hrmm. Anyway, today I fixed that and ordered a new computer. Why? because my current computer is dying like a thug.
<br />
<br /><div style="clear:both"></div><iframe src="http://rcm.amazon.com/e/cm?lt1=_blank&bc1=000000&IS2=1&npa=1&bg1=FFFFFF&fc1=000000&lc1=0000FF&t=zenerdcom-620&o=1&p=8&l=as4&m=amazon&f=ifr&ref=ss_til&asins=B002JLAU58" style="float:right;width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><iframe src="http://rcm.amazon.com/e/cm?lt1=_blank&bc1=000000&IS2=1&npa=1&bg1=FFFFFF&fc1=000000&lc1=0000FF&t=zenerdcom-20&o=1&p=8&l=as4&m=amazon&f=ifr&ref=ss_til&asins=B00503EA80" style="float:right;width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><iframe src="http://rcm.amazon.com/e/cm?lt1=_blank&bc1=000000&IS2=1&npa=1&bg1=FFFFFF&fc1=000000&lc1=0000FF&t=zenerdcom-20&o=1&p=8&l=as4&m=amazon&f=ifr&ref=ss_til&asins=B004EBUXSA" style="float:right;width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><iframe src="http://rcm.amazon.com/e/cm?lt1=_blank&bc1=000000&IS2=1&npa=1&bg1=FFFFFF&fc1=000000&lc1=0000FF&t=zenerdcom-20&o=1&p=8&l=as4&m=amazon&f=ifr&ref=ss_til&asins=B004RFBIUU" style="float:right;width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><iframe src="http://rcm.amazon.com/e/cm?lt1=_blank&bc1=000000&IS2=1&npa=1&bg1=FFFFFF&fc1=000000&lc1=0000FF&t=zenerdcom-20&o=1&p=8&l=as4&m=amazon&f=ifr&ref=ss_til&asins=B001FBH0HE" style="float:right;width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><iframe src="http://rcm.amazon.com/e/cm?lt1=_blank&bc1=000000&IS2=1&npa=1&bg1=FFFFFF&fc1=000000&lc1=0000FF&t=zenerdcom-20&o=1&p=8&l=as4&m=amazon&f=ifr&ref=ss_til&asins=B002VKVZ1A" style="float:right;width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><iframe src="http://rcm.amazon.com/e/cm?lt1=_blank&bc1=000000&IS2=1&npa=1&bg1=FFFFFF&fc1=000000&lc1=0000FF&t=zenerdcom-20&o=1&p=8&l=as4&m=amazon&f=ifr&ref=ss_til&asins=B003PJ6QW4" style="float:right;width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><iframe src="http://rcm.amazon.com/e/cm?lt1=_blank&bc1=000000&IS2=1&npa=1&bg1=FFFFFF&fc1=000000&lc1=0000FF&t=zenerdcom-20&o=1&p=8&l=as4&m=amazon&f=ifr&ref=ss_til&asins=B004YJVUBG" style="float:right;width:120px;height:240px;" scrolling="no" marginwidth="0" marginheight="0" frameborder="0"></iframe><div style="clear:both"></div><br /><br /><br /><ul><li>Corsair CC800DW Obsidian 800D Black Aluminum Full Tower ATX Enthusiast Case</li><li>ASUS LGA 1155 SATA 6Gbps USB 3.0 Supported Intel Z68 ATX DDR3 2400 Motherboards P8Z68-V PRO</li><li>Intel Core i7-2600K Processor 3.4GHz 8 MB Cache Socket LGA1155</li>Corsair Vengeance Blu 16 GB PC3-12800 1600mHz DDR3 240-Pin SDRAM Dual Channel Memory Kit</li><li>Western Digital 300 GB VelociRaptor SATA 3 Gb/s 10,000 RPM 16 MB Cache</li><li>Noctua 6 Dual Heatpipe with 140mm/120mm Dual SSO Bearing Fans CPU Cooler NH-D14</li><li>Corsair Professional Series Gold High-Performance 850-Watt Power Supply</li><li>EVGA 03G-P3-1584-AR GeForce GTX 580 3072MB GDDR5 PCB PCI-Express 2.0 Graphics Card</li><li>Windows 7 Professional SP1 64bit</li></ul>MathGladiatorhttp://www.blogger.com/profile/14854942302736663407noreply@blogger.com0tag:blogger.com,1999:blog-7286330783757155644.post-46699337465008588172011-07-16T15:23:00.000-07:002011-07-17T20:59:37.175-07:00Why Silicon Valley needs more money than NYC; wealth of a nationHistorically, before computers, I think Wall Street served a good purpose. It's ultimate goal was to make sure that great people who could transform the world had the resources needed to do so. The need to coordinate money into the hands of people who can use that money to create wealth is still needed. It's why the world needs investors. However, do we need Wall Street? Do we need the exchanges? Do we need Goldman Sachs?<br /><br />These are fundamental questions. I don't know the answer, but I'm willing to bet the answer will converge to "No".<br /><br />I think there is an opportunity for silicon valley to disrupt wall street.<br /><br />I view wall street in aggregate as corrupt these days because it isn't about creating wealth; it's about managing and optimising money. Money is not wealth. I internally cry a bit when I see a math/computer science major head for NYC to make money. Will they make money? Yes. Will they make wealth for the nation? No.<br /><br />I'm not really going to defend what I feel. I don't want too. I feel like Silicon valley needs to over-turn Wall street to change the leaders of the country.<br /><br />We need people who want to make life better for everyone rather than exploit people with complex rules and financial instruments.<br /><br />I believe we can build a better and brighter future.<br /><br />The wealth of our nation has been derived from our ability to say "Fuck you nature" not "Let's subordinate most of the country to poverty".<br /><br />When I look to silicon valley now, I see we are solving communication. This crazy thing called the Internet gives us new tools and new vehicles. I expect us to be able to vote from home. I expect us to remove the computational barriers that forced hierarchy on us. I expect the social web and the Internet to transform us into a culture of a switch rather than a hub.<br /><br />I expect better out of us.MathGladiatorhttp://www.blogger.com/profile/14854942302736663407noreply@blogger.com0tag:blogger.com,1999:blog-7286330783757155644.post-23371744426994970682011-07-16T03:38:00.000-07:002011-07-17T19:25:45.679-07:00Why women shouldn't vote! (Men do stupid things)In reading <a href="http://www.psy.fsu.edu/%7Ebaumeistertice/goodaboutmen.htm?">what is good about men?</a> this early morning due to a bit of insomnia. It was an interesting read.<div><br /></div><div>I'd like to apologize now for the link-bait title. I actually encourage women to vote (even more so now), and I have no problem with whatever feminists do. Also, for brownie points, I took women studies in college; primarily because I was seeking to understand why so women are so sparse in computer science.</div><div><br /></div><div>In the "What is good about men?", if you take it as an axiom and ask follow-up questions. What are the consequences. What about women and voting? Why have women not had/have a vote? Why have men been against it? Why do men oppress it?</div><div><br /></div><div>So, I was thinking about that when I was trying to get myself to sleep. It's interesting.</div><div><br /></div><div>I think I got it. Initially, women didn't want to vote so they were not responsible for the stupid ass decisions the men were taking. That's nice, but why the aggression against it?</div><div><br /></div><div>Well, I think the story goes like this. We are the children of victors. Once the victory is achieved, the peace settles in. A generation is born in peace and corruption and the conflicts moves inward. This corruption enables weaker men to gain prominence and weaker men need to put people into submission. That's where the differential is introduced.</div><div><br /></div><div>As to laws and aggression, most people fear change and will fight based on that notion alone. Strong men embrace change because change is different, interesting, contains glory, and fun. Weak men fear change because strong men come out on top.</div><div><br /></div><div>In any-case, I should return to sleep now. I thank HN for bringing it my attention whilst I desperately try to sneak back into bed.</div>MathGladiatorhttp://www.blogger.com/profile/14854942302736663407noreply@blogger.com0tag:blogger.com,1999:blog-7286330783757155644.post-37507656312074183952011-07-09T23:57:00.000-07:002011-07-17T19:27:07.892-07:00Nerd Rage: Bad Controls on iOS devices for gamesLike, seriously, state machines are not hard.<div><br /></div><div>Taking a few steps back, I bought a game on the App Store for over $0.99; when I spend more than $0.99, I expect magic and perfection.</div><div><br /></div><div>When I get a buggy, clunky, and bad user experience, I get angry especially when I paid more than $0.99. Now, I could just sit from my magical armchair of developer perfection and complain, or I could write some crappy code and maybe educate some iOS fools with code. So, I spent 20 minutes to write an HTML5 joystick controller. Here it is world: angry code to do joysticks right.</div><div><br /></div><div>Put this in your iOS 4 and enjoy the multi-touch-ness: <a href="http://ios.jeffrey.io/">http://ios.jeffrey.io/</a></div><div><br /></div><div><b>Thoughts on good UX for mobile and games:</b></div><div><br /></div><div>1. You need to control the event structure and not relegate it to some bounded box model. Bounded boxes are fine for buttons, but for things that need a level of fluidity and engagement, you need to control the entire screen.</div><div><br /></div><div>2. You need to understand state machines and how to guarantee the absence of a bad state transition. Namely, the controls shouldn't stick nor flip-flop. It should be very simple.</div><div><br /></div><div>3. You need to understand there are a multitude of thumb sizes.</div><div><br /></div><div>4. You need to eat your own dog food.</div><div><br /></div><div>I seriously wish I could get a refund. Argghhh!</div>MathGladiatorhttp://www.blogger.com/profile/14854942302736663407noreply@blogger.com0tag:blogger.com,1999:blog-7286330783757155644.post-51209085271673705482011-07-09T18:43:00.000-07:002011-07-17T19:27:20.987-07:00The eternal engineering questionBuild or Buy?<div><br /></div><div>This question haunts me because if I buy, then I'm not getting exactly what I want and am compromising my wants. If I build, then I risk it being disappointed (and messing up), and worse if its not what I want, then I have to live with the shame and can't complain.</div>MathGladiatorhttp://www.blogger.com/profile/14854942302736663407noreply@blogger.com0tag:blogger.com,1999:blog-7286330783757155644.post-51386618239258636222011-07-09T17:56:00.000-07:002011-07-17T19:26:57.643-07:00So, I was going to go to Macbut then I started to look at the price and power of the laptops...<div><br /></div><div>Compare: <a href="http://www.newegg.com/Product/Product.aspx?Item=N82E16834230103">http://www.newegg.com/Product/Product.aspx?Item=N82E16834230103</a></div><div><br /></div><div>and this <a href="http://store.apple.com/us_smb_78313/configure/MC721LL/A?mco=MjEyOTY5MDM">http://store.apple.com/us_smb_78313/configure/MC721LL/A?mco=MjEyOTY5MDM</a></div><div><br /></div><div>the mac book has same processor, 1/3 of the memory, 1/3 of the HD, smaller screen, 1/3 of the video memory. Argh! So, maybe I'll just build one like codinghorror. Gauh.</div><div><br /></div><div><br /></div>MathGladiatorhttp://www.blogger.com/profile/14854942302736663407noreply@blogger.com0tag:blogger.com,1999:blog-7286330783757155644.post-59681461315529479362011-07-03T17:19:00.000-07:002011-07-17T19:27:35.926-07:00Why writing programming languages is so fun yet so damn hardI love sitting down on a Sunday day and throwing a parser with some tree manipulation to try to create a new way of expressing computing. However, it's hard.<div><br /></div><div>I'll point out some goals that I think about when I'm in a PL mood.</div><div><br /></div><div>(1) I hate garbage collection in a non-trivial way. It's stupid. Before you curse me into madness, there are a couple of ways of dealing with it. One, ignore it and have memory leaks. It's not rocket science to manage memory, but it can be a pain in the ass when you try to pass around ownership. Two, kill the heap. This, I've tried and it works; it isn't for the feint of art. Three, have reckless memory manage in contexts that get destroyed and share state via a DB like thing (i.e. Mysql, SQlite, or a DOM). I like Three a lot.</div><div><br /></div><div>The nice thing about having reckless memory usage with a persistence back-end is that the thing that is reckless can fail. Say, you run out of memory, ok, create, kill the context. Now, from a performance point of view, this approach is strange to say the least. This is why I'm interested in embedding transaction logic into PL for optimization.</div><div><br /></div><div>I don't have a solution to this as my last big language attempt just used a DB.</div><div><br /></div><div>(2) Asynchronous is full of win. I'm not a fan of threads (Threads are Hard, m'Kay), and I would like a very easy way to think synchronously yet behave asynchronously. I'd like not to have to pass around closures, nor do I feel like yielding my code with co-rountines. I want something better..</div><div><br /></div><div>(3) Saving state is fun. My last PL had the ability to zip of a closure, put it in a queue, and then distribute the computation. I'd like to be able to pause the state of the computation and move it between computers. The difficulty here is making it play safe with a persistent data store. See (1)</div><div><br /></div><div>(4) I don't want to write a VM nor target low level code. My primary target must be C (or C++). I'd like the code to run on the iOS. I'd like it to be vanilla C. I'd very much like it to work in JavaScript. I'd like a real "write once, run anywhere" language that targeted machine code.</div><div><br /></div><div>(5) I need closures; just because they make my life easy</div><div><br /></div><div>(6) I like either dynamic types or polymorphic types (ala OCaml)</div><div><br /></div><div>(7) I like type inference</div><div><br /></div><div>So today, I made a very basic framework for expressing some of these ideas. I have mental solutions (because I've solved them before) for (3-7), but 1 and 2 are driving me nuts. I know C# has a kinda solution to 2 using co-routines, but's only ok. I want magic.</div><div><br /></div><div>I want real magical shit in my PL, but magic is hard.</div>MathGladiatorhttp://www.blogger.com/profile/14854942302736663407noreply@blogger.com0tag:blogger.com,1999:blog-7286330783757155644.post-1841994529755744962011-07-03T09:56:00.000-07:002011-07-17T14:37:12.687-07:00Morning Choice: Video Game or CodeEvery weekend, I have a choice.<div><br /></div><div>Do I play a video game? Or code?</div><div><br /></div><div>Today I choose coding. Videos games are getting old.</div><div><br /></div><div>And, I'm busting out ocaml because I'm going to try something very hard. I'm going to work on an asynchronous state machine compiler where you write code synchronously that turns into an optimized state machine.</div>MathGladiatorhttp://www.blogger.com/profile/14854942302736663407noreply@blogger.com0tag:blogger.com,1999:blog-7286330783757155644.post-6546130904862741482011-07-02T08:26:00.001-07:002011-07-17T19:27:51.899-07:00First Joke of the Morning<div>I'd like to talk about whole foods</div><div><br /></div><div>The thing about whole foods is this: you need to read everything. The other day, I wanted some Parmesan cheese. So, I grabbed some at whole foods. It wasn't Parmesan. It involved sheep milk, and I was not amused. My hamburger helper like meal tasted like feet.<br /></div>MathGladiatorhttp://www.blogger.com/profile/14854942302736663407noreply@blogger.com0tag:blogger.com,1999:blog-7286330783757155644.post-512701898219133222011-07-02T08:02:00.000-07:002011-07-17T19:28:39.283-07:00ComedyDelivery is very hard, so I've written jokes that are hilarious. Well, to me at least.<div><br /></div><div>One is based on a very funny yet embarrassing experience from my child-hood. In a casual setting, telling people makes them LOLz. However, trying to stand up and tell it to people. Woah, that's hard. Well, its hard for me because I'm a hard-core introvert that lives in my own fantasy world. Interacting with the outsiders tends to be a messy process. Fortunately, I've learned ways of dealing with it.</div><div><br /></div><div>For instance, I used to have a deep fear of talking in front of people. So, I taught at college. That beat the fear out of me, and so I can go up and talk in front of people. It's oddly easy when the subject is boring like math, programming, or business.</div><div><br /></div><div>What about messy and embarrassing past stuff? How do I not crack up during delivery?</div><div><br /></div><div>Back to comedy: How do i take a personally embarrassing moment in my life and turn it into a deliverable routine?</div><div><br /></div><div>To the twitter mobile!!!</div><div><br /></div><div>Update: twitter was a failure. <a href="http://www.quora.com/How-do-i-take-a-personally-embarrassing-moment-in-my-life-and-turn-it-into-a-deliverable-routine">How about quora?</a></div>MathGladiatorhttp://www.blogger.com/profile/14854942302736663407noreply@blogger.com0tag:blogger.com,1999:blog-7286330783757155644.post-73858432993515836152011-07-02T05:00:00.000-07:002011-07-17T19:28:21.620-07:00Wealth: the link between Hacker and Hustler<div><b>tl;dr;</b></div><div><br /></div><div>hackers generate wealth, hustler's turn wealth into money</div><div><br /></div><div><b>Longer version:</b></div><div><br /></div>I was thinking about wealth the other day. How do you define wealth?<br /><br />I think wealth is best defined by the ability to satisfy your want. If you want something and can't have it, then you are not wealthy (i.e. poor). So, I'm an inventor-hacker, and most of my want is satisfied with some work (except for things like space travel... I'm very space-travel-poor).<br /><br /><div>What about money?</div><div><br />Now, where does money play into this? When I grew up, my parents fought about money. My dad made it, and my mom spent a lot of it. So, I wanted nothing to do with money, and I put on the hat of the academic monk. I was happy in that role, but then I needed money (due to personal reasons). My personality isn't the type that settles for nickels and dimes when I actually have to go out and earn, so some friends and myself did the cool thing before it was cool. We did a start-up, and we were going to be bigger than Facebook and Texas! Multiplied!!<br /><br />It was a failure; the next business wasn't a failure. I learned about money, and how to make it.<br /><br />Money is time. It's someone else's time for doing something that neither you (nor them) want to do. That's the only thing that it is. It's nothing else.<div><br /></div><div>So, if you want money, then you do things people don't want to do (or can't do) (like math), and do it well.</div><div><div><br /></div><div>So, back to wealth. Wealth is satisfying want. If you have a lot of money, then you should be able to satisfy your want and be happy. What if your want can't be satisfied by money, yet you have it? </div><div><blockquote>"There is no class so pitiably wretched as that which possesses money and nothing else." - Andrew Carnegie </blockquote><div><i>What do you want? </i>Answering this question is the key to your happiness. If you are a hacker, then the shear act of satisfying your want produces wealth. I've invented things my entire life, and I have to say that makes me very happy. I like making obscure tools for obscure problems. I like optimizing the shit out of the things. I like automating tedious things (because tedious things are bullshit). I oddly enjoy taking some shit ball mess of code and figuring out where it leaks memory. I like to solve problems, and I really-really love math.</div><div><br /></div><div>The things that I do to satisfy <i>my wants</i> generate wealth.</div><div><br /></div><div>What about the hustler?</div><div><br /></div><div>The hustler's job is very straightforward: Transform the wealth that hackers generate into money. Build a nice cave, make the hackers happy on all non-hacking related dimensions, hire more hackers, and hire people to sell the wealth. Build a business that is good at transforming the wealth of your hackers into products for people, and then you win.</div></div></div><div><br /></div><div><i>Extra credit: what do managers do? They make sure the hackers are producing the right kind of wealth. Tada!</i></div></div>MathGladiatorhttp://www.blogger.com/profile/14854942302736663407noreply@blogger.com0tag:blogger.com,1999:blog-7286330783757155644.post-90172039332940933342011-06-26T12:46:00.000-07:002011-07-17T19:28:47.563-07:00JSON, JSON, JSONI love JSON.<br /><br /><span style="font-style:italic;">I was going to write more than this for this weekend, but I got off topic.</span>MathGladiatorhttp://www.blogger.com/profile/14854942302736663407noreply@blogger.com1tag:blogger.com,1999:blog-7286330783757155644.post-83143414337449496442011-06-19T14:13:00.000-07:002011-07-17T19:29:01.327-07:00Pick your Archtype (CEO, Professor/CTO, Humanitarian)<div>I've tried to reply to <a href="http://www.rednovalabs.com/im-bored-so-lets-start-a-part-time-business/">Dan Miller's recent post</a> in less than a paragraph, but it just doesn't work. So, here is the longer version.</div><div><br /></div><div><hr /></div><div><br /></div><div>I think it also depends on how you define success and how you measure the rewards. For instance, playing monopoly or a video game has very low risk, but it has reward. Can you make a living doing it? No. So, you have to do something else. Could you get good at it and have a part-time job mentoring other people in it? Sure.</div><div><br /></div><div>I highly recommend Dan Pink's book "Drive" (or watch this <a href="http://www.youtube.com/watch?v=u6XAPnuFjJc">awesome youtube video</a>) which basically breaks down into three things people want: autonomy, mastery, and purpose. </div><div><br /></div><div>It is very clear in your article that you are preferring autonomy and being your own trouble maker. Being a full-time entrepreneur is all about autonomy. What about mastery? Well, look to academics. It's not exactly rewarding in a capitalistic sense, but it is very clear how people driven by mastery end up there. What about purpose, this would be the domain of the non-profits.</div><div><br /></div><div>So, it boils down to this: What is your arch-type?</div><div><br /></div><div><hr /><br /></div><div>When you answer this question, your path unfolds. Actually, answering this question is similar to what is your life's goal is probably key to your own sense of happiness.</div><div><br /></div><div><b><span class="Apple-style-span" style=" line-height: 19px; font-family:sans-serif;font-size:13px;" ><span lang="grc">γνῶθι σεαυτόν </span></span>(Know thyself)</b></div><div><br /></div><div>This is probably the most fundamental and important thing you can do in life. Stop pretending based on what others want or need out of you. Don't listen to others; they are wrong. Be yourself and understand yourself. Understand your strengths and your weaknesses. Maximize your strengths, compensate for your weaknesses. Find humility in your weaknesses. Find confidence in your strengths.</div>MathGladiatorhttp://www.blogger.com/profile/14854942302736663407noreply@blogger.com0tag:blogger.com,1999:blog-7286330783757155644.post-30599369352025916492011-06-18T08:42:00.001-07:002011-07-17T19:36:21.832-07:00Part-time Saturday Entrepreneur: Time ManagementThe first bit of advice would be to not write about time management. This entry is with respect to having a part-time business while maintaining a full-time job. It's also a longer comment to <a href="http://www.rednovalabs.com/im-bored-so-lets-start-a-part-time-business/">Dan Miller's recent blog post</a>. Dan's my former employer and CEO of <a href="http://www.rednovalabs.com/">RedNova Labs</a> and a great boss, and he has ambitious goals. This entry is about having a part-time business with less ambitious goals.<div><br /></div><div>At any given time, I maintain the details of about 7 to 9 projects in my head with about 20 to 300 ideas on the back-burner. This annoys my wife since I'm always "on", so I try to make sure my wife has a time in the reserve.</div><div><br /></div><div>So, how does <b>time </b>work into this hectic and crazyness. Well, there are 168 hours in a week. You should sleep for 56 of those hours. You should eat a good lunch and relax for 7 of them. You should eat a good dinner and relax for 7 of them. You should shower for 3 of them. You should take a long bath for 1 of them. You should also probably have about 3 hours of sexy time a week. You can rush your breakfast in about 2. You need to exercise about 9.</div><div><br /></div><div>This gives 80 hours. </div><div><br /></div><div>I live in an apartment, so I don't have to maintain a house. Houses cost me time.</div><div><br /></div><div>I live in the city, so I don't have a long commute. Driving everyday is not for winners, and it is bad for the environment.</div><div><div><br /></div><div>I don't have kids nor do I plan to have them.</div></div><div><br /></div><div>My wife doesn't work outside the home, so I can have as much time as possible from life. I love having a house-wife! It's awesome.</div><div><br /></div><div>My life is structured such that I'm not wasting precious time on stupid things that don't add value to my life.</div><div><br /></div><div>Now, the rub is this. You can't focus all your time in one thing. You will burn out. You need distractions. Your distractions need not be a loss.</div><div><br /></div><div>Instead, you need to manage your projects and manage your goals. Everyday, make progress.</div><div><br /></div><div>As long as the progress bar moves towards 100% somewhere, you are winning. Now, you may not find the win you expect. For instance, moving projects forward slowly means they may become irrelevant or uninteresting. But, that doesn't mean the process of moving things forward was a waste of time. I learn things everyday, and I like that. I like to learn. <i>Because of this, my life is in a constant state of win.</i></div><div><br /></div><div>For instance, this blog could be considered a waste of time. But, I'm writing words and composing sentences trans-coding my thoughts from my disorganized grey matter. My writing style is developing. This helps my professional activities by improving my communication with others as well as opening up discussion with people. It's helping me express myself in a way that isn't code.</div><div><br /></div><div>As long as you gain something from an activity, you win. It's as simple as that.</div><div><br /></div><div>The key to keeping motivating is having the daily option to change your priorities. This is why work can be stressful because you are not in full control of the priorities. Your hobbies should not have priorities except to just try.</div><div><br /></div><div>This is why my wife's business is not a service business. Service businesses require you to adjust your priorities to the people you are servicing (duh!). Instead, my wife's business is all about content. When the creativity is available, inventory is built. When the creativity is distracted, inventory is going stagnant. I'm looking forward to about a week every summer where I can sell inventory. I can hustle it at pike's place, and that helps me professionally in understanding want. Understanding want is the key to making customers happy.</div><div><br /></div><div>So, if you want to be a part-time entrepreneur, then make sure the venture is compatible with it. Example part-time ventures: Making video games, writing books, composing songs, making youtube videos, teaching kids, mentoring college graduates, make swords, build a giant robot of death, coaching little-league, doing odds and ins for people, design board games, giving city tours, etc.</div><div><br /></div><div>Now, the ultimate question is: What makes you happy?</div><div><br /></div><div>I think this is the ultimate question. Once you answer it for yourself honestly, you can determine the path you really want to be on. How do you make it work for you? That's a different question which I don't have the answer for. I do know that what-ever you do, it at some level needs to make money.</div><div><br /></div><div>This is the cruel reality of capitalism. At the end of the day, some of your projects need to bear fruit. The things you want to do may not bear fruit. A challenge for the social web is to make it possible so that more and more people can make a living doing things that they want to do. For instance, look at <a href="http://www.etsy.com/">Etsy</a>. It opens up a lot of doors for people that would of had to sit in tents during fairs; now those people can reach a global audience.</div><div><br /></div><div>This is the challenge for full-time entrepreneur: make me more effective. Make sure I'm spending my precious time producing what makes me happy. Make it easy. Unblock me. Provide me a service that lets me jump over hurdles. Provide me marketing. Provide me sales. Figure that shit out, so I can win!</div>MathGladiatorhttp://www.blogger.com/profile/14854942302736663407noreply@blogger.com0tag:blogger.com,1999:blog-7286330783757155644.post-20572090409981339392011-06-18T07:57:00.000-07:002011-07-17T19:36:26.313-07:00Part-time Saturday Entrepreneur: Week 1<div>I did some administrative stuff. Picked a name, got the domain, set up the domain, picked a background color (#E6DFD5), created a slogan, set up a basic landing page, setup and installed google analytics.</div><div><br /></div>I wrote a children's book this morning; this unblocks my wife on the first project.<div><br /></div><div>It has plot broken down into 22 scenes that when printed on two sides of paper should make for a decent sized children's book.</div><div><br /></div><div>It has a title: "The Robotic Mr. Ducky"</div><div><br /></div><div>It has a moral: "Errors are ok, you're just human. Don't be perfect. Find Love." (I know, how awesome is that).</div><div><br /></div><div>So, now that I have the story done, my wife can edit it, illustrate it, compose it. Now, I need a dead-line. Well, one of my dear friend's from high-school is going to have a baby in two months. That sounds like a good dead-line.</div><div><br /></div><div>All before 8:00 AM.</div><div><br /></div><div>For the rest of the day, I'm making sure she can actually get to work. Is the desk clean and ready? Are the supplies accessible? Etc.</div>MathGladiatorhttp://www.blogger.com/profile/14854942302736663407noreply@blogger.com0tag:blogger.com,1999:blog-7286330783757155644.post-43245078372128112302011-06-17T22:41:00.000-07:002011-07-17T19:23:03.081-07:00Part-time Saturday Entrepreneur: Introduction<div>So, I'm starting my wife's company. My wife is an artist, and she needs an art dealer. This is my hobby. What is your hobby?</div><div><br /></div><div>All things aside, I want to talk about being an entrepreneur. So, I'm starting a new series. Namely, about being a part-time entrepreneur since I've got a full-time job that's funding my wife's venture.</div><div><br /></div><div>So, what is my wife's company all about? I don't know, but it involves her turning her hobby into wealth, and my job is to sell it and turn that wealth into money. I've got six hours a week to do it.</div><div><br /></div><div>Now, as to my writing. What should I write about today before I put on the CEO hat and get shit done for my wife's company tomorrow.</div><div><br /></div><div>No idea. I have no idea what it means to be an art dealer! Awesome, something new to learn (I could be learning to fly, but my wife will not let me fly...)</div><div><br /></div><div>Well, the first goal is to get the wife producing and turn on the factory.</div><div><br /></div><div><b>Project 1</b>: A children's book.</div><div><br /></div><div>Seriously, I'm going to have her do a children's book and I'm going to write the content (because I'm an awesome writer as you well know). I'll turn off the cursing.</div><div><br /></div><div>Once I get this as rough product, I'll buy illustrator.</div><div><br /></div><div>I've never produced a children's book before, so what do I need to do? How do I promote it? The nice thing is that there are a lot of parents out there, so there is a market. I can sell copies at Pike Place market, but I fear that will fail. I could involve pike place market in the scenery (TODO: research the copyright of the "Public Market" sign). Now, I'm fairly sure I can get production going. However, sitting on inventory kind of sucks.</div><div><br /></div><div>Ok, Ok, I'll hold off until tomorrow.</div>MathGladiatorhttp://www.blogger.com/profile/14854942302736663407noreply@blogger.com0tag:blogger.com,1999:blog-7286330783757155644.post-10596305916381954102011-06-12T14:48:00.000-07:002011-07-17T19:43:41.936-07:00The sucky thing about being a CTO (or C*O)Your voice is representative of your company as you are in charge of the ship.<br /><br />This is one reasons I left Kansas and my stewardship of a small company.<br /><br />So, you can't write about religion in a controversial way. You can't be a atheist/agnostic in the mid-west and expect to have customers. You can't talk about the richness of human sexuality and represent a company in the mid-west. You can't raise money while wearing a death-metal t-shirt. You definitely can't wear pink and be happy at the same time.<br /><br />Small business C*O have to conform to their environment. This is why I think liberal cities have much more successful entrepreneurial environments. If there is a strong gay presence, then I guarantee you can get away with a lot more things than in a conservative city. The attitude to fight for who you are is the same thing you need to build a company, so I think the correlation stands.<br /><br />There are things that I want to fight for; I want to fight for gay rights, freedom, women's rights, and other noble things. The engineer in me wants the world to be better. It's in my blood as an American to fight. The problem is fundamentally, I'm not willing to let other people suffer for my fight. Maybe I'm a pussy? No, I think it is sensible. There is no point in recruiting people that don't share your fight.<br /><br />The fundamental problem of the C*O is that the professional (market norm) and personal (social norm) roles in life are conflated due to PR, secret nature, and stupid human politics.<br /><br />My favourite and all-time hero is George Carlin. You can not be like George Carlin and be a C*O (in the mid-west). If your company has a global foot-print, then you have to be careful. You have to be neutral.<br /><br />Neutral is boring.<br /><br />Neutral is death.<br /><br />I want to live, so that means I have to experience life. Last Wednesday, I crashed <a href="http://www.seomoz.org/">#MozParty</a> to spend time with a old friend. Today, I'm going to <a href="http://www.elcorazonseattle.com/index.html">goth like bar that I've never been into to listen to music I've never listened too before</a>.<br /><br />So, I'm having a lot of fun in Seattle. I'm happy, and I can be my plucky self and share it with you. I like that.MathGladiatorhttp://www.blogger.com/profile/14854942302736663407noreply@blogger.com0tag:blogger.com,1999:blog-7286330783757155644.post-82025030931435525662011-06-12T14:42:00.001-07:002011-07-17T20:01:04.390-07:00Geek Hypervisor Mode; staying sane in the insane worldI call being a professional "geek hyper-visor mode". Namely, it is where you put you wants and personality aside to get the job done and work effectively.<br /><br /><span style="font-weight: bold;">What does this mean?</span><br /><br />It means your religion of OS, programming language, library, framework are all out of context.<br /><br />It means your design philosophy is aligned to what the team can execute on.<br /><br />It means your goals are aligned with the companies goals.<br /><br />It means you pick up new tools in your arsenal to #win.<br /><br />It means exercising good judgement.<br /><br /><span style="font-weight: bold;">Unwind.</span><br /><br />The fundamental problem of hyper-visor mode is that it can wind you up.<br /><br />The wife helps.<br /><br />Side projects help.<br /><br />Comedy helps a lot.<br /><br />Writing helps.<br /><br />Cursing, oh, cursing lots helps. Fuck yeah!MathGladiatorhttp://www.blogger.com/profile/14854942302736663407noreply@blogger.com0tag:blogger.com,1999:blog-7286330783757155644.post-55893994443265823472011-06-12T13:45:00.001-07:002011-07-17T19:44:27.835-07:00Why I just give up on Linux DesktopI've been an advocate for computation in general for the majority of my life. I have no real preference for either Apple, Microsoft, Google, or open source derived products. I measure products on their own merits.<br /><br />For servers, computation, scalability, performance, expressiveness. Linux wins by far. This makes a great deal of sense when you consider the market. The Linux market is by developers for developers.<br /><br />For enterprise-y shit like Outlook and Exchange, I'll trust Microsoft hands down compared to an advertising company (Why I use Google Apps for personal stuff? Well, ..., I'm lazy and cheap).<br /><br />For finding shit, I can trust google.<br /><br />For my phone, I love the iPhone since it is best product on the market that addresses my needs. Android? LOLz. Maybe... that depends on iPhone fucking up their momentum or another company building something that makes people happier than the cracked out iPhone.<br /><br />Now, for a majority of my life, I've used both Microsoft Windows and Linux as my primary operating systems for Desktop. I give up on Linux in the Desktop, and while I like it for developing... It will probably never by my primary one at home. Why? I'm old now. I have things to do. I want my shit to work out of the box. It's just that simple. I don't want to tweak my usb wifi stick to work; I just want to plug it in and have it work with out me configuring a bunch of shit.<br /><br />So, I'm abandoning Linux on the desktop since I primarily just have a ridiculously number of terminal screens open. Do I need an OS for that?<br /><br />Besides, with all the cloud shit that people are producing, does the OS really matter anymore? I have been meaning to checkout a chromebook...<br /><br />Now, let me think about Windows? do I want to live in the Windows world? FUCK NO. Windows is great for two things: Outlook and Video Games (I would say Visual Studio, but I don't drink that kool-aid any more).<br /><br />Now, having seen the WDDC key-note, I have to say: Lion + iCloud = win. If all I need is Internet, then I'm golden. It should work out of the box without problems. For my consumer needs, I'm good.<br /><br />So, that just leaves me with Games. While some of my favourite games are available on the Mac, I find myself leary of jumping the boat entirely. Maybe I should. I don't have time to play all my games anyway. Maybe this is the part where I grow up, and stop playing games entirely? Some weeks go by these days, and I don't touch a game at all.<br /><br />OK, let's do a systems check on the games I'd probably sell a kidney for: I have a 360. Ok, so I'll be able to play Mass Effect 3. Diablo 3 will run on Mac. Ok, so far good. Portal 2? Check. Combine that with iPhone/iPad, and I should be set. If not, then I can use that bootcamp shit with one of my Window 7 dvds.<br /><br />Ok, so I've decided. my next computer is going to be a mac. Now, should I get a <a href="http://store.apple.com/us/browse/home/shop_mac/family/macbook_pro?mco=MTM3NjU5MzU">laptop</a> or a <a href="http://store.apple.com/us/browse/home/shop_mac/family/mac_pro?mco=MTM3NDcyODc">big ass machine</a>? Hrmm... well, my ego and male obsession with bigger points me to the big 12 core bastard. Now, my wife would want one too. So, I have to be willing to get two of them.. Maybe not since that would heat up my apartment like crazy. So, let's plan on getting a laptop.MathGladiatorhttp://www.blogger.com/profile/14854942302736663407noreply@blogger.com0