Apple, open-ness, and Section 3.3.1 an objective view.

The Apple update to the iP(ad|hone|od) developer agreement 3.3.1 has caused quite a stir in developement communities all over.  The change is summarized quite adequately here: http://daringfireball.net/2010/04/iphone_agreement_bans_flash_compiler. Queue the posturing and legal bullshit from all sorts of people and companies. Rather than posting comments to all of the different articles I am just going to writhe my thoughts on each here. I am not hiding my opinions on my blog that very few people read I have responded to the tweets via Twitter linking back here were appropriate.

Starting with: http://blog.joa-ebert.com/2010/04/09/what-apple-just-did/ and http://twitter.com/joa/status/11845234511

This is completely not the same thing as the change made to the developer agreement. In the case illustrated by the author the app creators are the musician and Apple is, of course, Apple, however, this situation isn’t the same because Apple *wants* all styles and sorts of music because music doesn’t carry viruses or other problems for their mobile platform. If the situation were corrected to be like the change to the developer agreement the musician would be trying to submit his/her song as an MP3 ripped from a .WMA file which means that the quality is far inferior from a non-converted MP3. Who’s going to catch the blame for the music quality being terrible? Apple, that’s who. Customer’s are not going to blame the musician for the sound quality (viruses, crashes, and other shit) they are going to blame Apple.

This author doesn’t seem to be able to make logical connections between things without obvious fallacies of composition. Correcting his second example: “apple forcing people to develop in obj-c is as if microsoft would tell you to use mspaint for your design work if you want Microsoft to sell it for their Windows Mobile applications.”

Second: http://www.bloomberg.com/apps/news?pid=20601204&sid=aiTiUZWa.uGw (brief aside, Bloomberg’s Web site is fucking horrible)

Just this line: “In a filing with the SEC in January, Adobe said that it wanted to work with Apple on the iPhone, though it needed Apple’s cooperation to do so.” Adobe, Apple doesn’t want you on its mobile plat form, get over it.

Third: http://www.mobileorchard.com/goodbye/

Wow, quitting one’s entire life and job because of 3 lines added to the contract? It doesn’t even seem that the addition would have affected the author at all. I completely support his decision because, its his; he can make whatever fucking choice he wants…just like Apple did. I do wish him the best of luck.

Fourth: http://twitter.com/Hvilela/status/11891058025 & http://twitter.com/Hvilela/status/11900260520

The Market (Apple) just did. “Us” being Flash developers, no they don’t care about you…isn’t that quite obvious?

Fifth: http://www.wolfcat.com.au/randomrants/2010/04/postid-1023/

This author seems to have the players switched (Apple being beta and Adobe VHS) when it should be Apple is VHS and Adobe is beta. Apple is not the one about to have its flagship product replaced by HTML5, CSS3, and a little Javascript, that’s Adobe. Apple will be around long after Flash has been replaced with something else.

Sixth: http://whydoeseverythingsuck.com/2010/04/jobs-bans-non-c-libraries-insane.html

This author fails for not being able to read the WikiPedia page that he links to. The contract is between the developer and Apple not Apple and anyone who wants to user their products to make money. It will be a sad day when companies who produce products for other companies’ products have a say how the product can be created. This is something similar to what would happen to all of the iPhone twitter applications if Twitter released their own application for iPhone or drastically changed their policies about client applications. (this was written before the announcement here: http://blog.twitter.com/2010/04/twitter-for-iphone.html with Twitter doing exactly that, releasing their own application)

Seventh: http://twitter.com/sirobertson/status/11897793015

Uh…sorry you were dumb and didn’t see this or something like this coming?

Eighth: http://twitter.com/troygilbert/status/11874702606

Dangerous indeed…at least to security and stability of applications not to Apple’s platform.

Ninth: http://twitter.com/skiller/status/11874379899

If you threaten to go to Windows that should be your punishment; going to Windows.

Tenth: http://twitter.com/markive/status/11880506004

Looks like your team isn’t made of the right people then. Small development teams such as Massively Overrated have been kicking ass in releasing applications that not only work, fast they are beautiful as well.

Eleventh: http://twitter.com/uliwitness/status/11869629162 & http://twitter.com/uliwitness/status/11870024049

What? & It is *clearly* not a bug, I hardly think the Apple legal team let bugs through.

Twelfth: http://twitter.com/pauliusuza/status/11890230741

Can they tell you to use a different platform that won’t tell you that then?

Thirteenth: http://twitter.com/aral/status/11881304099

It seems to me that this is ALL about the UX and making it consistent.

Fourteenth: http://theflashblog.com/?p=1888

This is perhaps the most frustrating as the guy is an evangelist for Adobe who can’t seem to see that Adobe does the exact same stuff to a worse degree in some cases. Starting with his 3rd paragraph I will answer each of his points.

“What they are saying is that they won’t allow applications onto their marketplace solely because of what language was originally used to create them. This is a frightening move that has no rational defense other than wanting tyrannical control over developers and more importantly, wanting to use developers as pawns in their crusade against Adobe.”

Can I write Flash applications is Python? What about Ruby? Java? Can I use some other program or IDE to build Flash applications? No, wait isn’t this the exact same thing? Adobe actually added a an export for iPhone feature to their newest product CS5 just trying to invite themselves to a party they weren’t invited to. “Tyrannical control over developers” has this guy seen the price of Adobe CS4? http://www.adobe.com/products/creativesuite/design/?promoid=DTEMS $1800 fucking dollars, that is 18 years of the iPhone Developer Program…at least Apple is classy enough to provide the entire development suite and tutorials for the price of $99 (1 year of the the iPhone Developer program).

“I am positive that there are a large number of Apple employees that strongly disagree with this latest move. Any real developer would not in good conscience be able to support this. The trouble is that we will never hear their discontent because Apple employees are forbidden from blogging, posting to social networks, or other things that we at companies with an open culture take for granted.”

As opposed to the jackassery you have here? Apple has those rules so that exactly what you have done here doesn’t happen to them.

“Adobe and Apple has had a long relationship and each has helped the other get where they are today. The fact that Apple would make such a hostile and despicable move like this clearly shows the difference between our two companies. All we want is to provide creative professionals an avenue to deploy their work to as many devices as possible. We are not looking to kill anything or anyone. This would be like us putting something in our SDK to make it impossible for 3rd-party editors like FDT to work with our platform. I can tell you that we wouldn’t even think or consider something like that.”

Adobe has helped Apple get where? You wouldn’t consider anything like that because you NEED to be on every platform to make money. Apple doesn’t NEED you, in fact, it has been made pretty clear Apple doesn’t want you…on their mobile platform at least.

“Many of Adobe’s supporters have mentioned that we should discontinue the Creative Suite products on OS X as a form of retaliation. Again, this is something that Adobe would never consider in a million years. We are not looking to abuse our loyal users and make them pawns for the sake of trying to hurt another company. What is clear is that Apple most definitely would do that sort of thing as is evidenced by their recent behavior.”

Once again you wouldn’t consider this because you need to sell those CS4 units at $1800 a pop to everyone who will buy it otherwise you are not going to make money. You don’t make changes, not because you wouldn’t hurt another company but because you NEED Apple and other computer manufacturers or you don’t have a business. What Apple has shown by their behavior is that they want absolute quality with no exceptions for their platform. I believe this tweet sums it up: http://twitter.com/nikf/status/11881871981 I won’t use TweetDeck because of Air.

“Personally I will not be giving Apple another cent of my money until there is a leadership change over there. I’ve already moved most of my book, music, and video purchases to Amazon and I will continue to look elsewhere. Now, I want to be clear that I am not suggesting you do the same and I’m also not trying to organize some kind of boycott. Me deciding not to give money to Apple is not going to do anything to their bottom line. But this is equivalent to me walking into Macy’s to buy a new wallet and the salesperson spits in my face. Chances are I won’t be buying my wallets at Macy’s anymore, no matter how much I like them.”

Back to another fallacy here, this one is a false analogy. Apple didn’t spit in your face, Apple changed their policy…as is their right to do, and you disagree with their change because you don’t want to learn how to do development their way. This would be more like your job telling you if you don’t have skill x you will be fired and instead of learning skill x you learn how to get around learning skill x, don’t be surprised when you get fired. People have obviously seen this coming: http://iphonedevelopment.blogspot.com/2009/10/sue-me-i-think-developers-should-care.html and Adobe announcing that they are going to circumvent Apples wishes is like being spat on.

This pretty much sums up the entire Adobe complaint: http://twitpic.com/1ecnga

There are some people who are incredibly happy about this because it takes a while to develop games in Objective-C rather than drag-n-drop Flash applications that can just be converted or compiled into binaries it is easy to understand their happiness: http://twitter.com/fishermen21/status/11888110483.

This is ultimately going to make the entire CocoaTouch platform better because of the larger number of developers using and creative native tools instead of the crap they are using now.

Taxes, business, and FreeAgent.

I, finally, made my yearly pilgrimage to the accountant to have my taxes done. The previous 3 years taxes were *extremely* easy to do since I only worked one 1 job and had 1 W2 form that needed to be done.  This year was much different, I owned a business, worked for a company based in a foreign country, and spent 8 months working for a company that issued a W2. After  2 hours of sweating the inevitable words “You owe” I came out with a $1500 refund instead. (Thanks to Obama and my $7,000 worth of school expenses).

During the 2 hours I spent in the accountants office when she was asking me for reciepts for expenses I knew I had but  didn’t have the receipt for, things that could have helped out more with the refund. My accountant noticed my level of disorganization as well, she ended up getting an accounting ledger that she had in her own supplies and giving it to me so that next year when tax time comes things will be easier on her. I’m not a ledger kind of person so I began looking for some online accounting app that would take the actual work out of it.

I looked at the normal suspects LessAccounting, FreshBooks, and Mint. They all have similar features but one thing I absolutely hate is their tiered pricing, I am limited to the number of feature x as long as I am on plan x. I don’t want to be limited to x because I don’t want to spend $300 a month to buy plan y. I want all the features available or I don’t want the service. As Matt Gemmell said here: “If you’re an employed adult who objects to paying $10 for a piece of software, you should be utterly ashamed of yourself.” I agree. I don’t mind paying for software, however, I won’t pay $300 a month for my business doing well, that doesn’t fucking compute. So I finally on Twitter found FreeAgent. FreeAgent is a set $20 per month, no worries about the number of invoices I was able to send, no worries about the better I do the more I pay.

FreeAgent is really great accounting software, I have taken college level managerial accounting classes with Quickbooks and this is much nicer. Quickbooks is slow even on a fairly high end machine it is extremely slow…and UGLY. The UI seems to have been done not by UI designers but by accountants who want as many buttons on the screen as possible. FreeAgent is not like that, it is very cleanly designed. As for speed FreeAgent is very fast, provided you have SSL caching turned on in your browser. My only complaint with the speed of FreeAgent is Chrome doesn’t support (as far as I can tell) caching for SSL pages. Switching to FireFox where I already have that turned on made things as fast as they should be.

Using FreeAgent is as easy as can be. I imported my bank account transactions and within an hour I had gone from a handful of receipts for who-knows-what sitting in random piles on my desk and through my files to a full balance sheet and profit and loss statement for Quarter 1. It is indeed worth $20 per month and with their awesome discount scheme http://www.freeagentcentral.com/support/kb/misc/the-freeagent-referral-scheme it can be cheaper, if you have enough friends they’ll even pay you to use it. If you need to keep track of your finances and don’t want to be punished when business picks up, I definitely recommend using FreeAgent!

Building a community, 1 year invested.

Building a community is hard work. There are a lot of steps that have to be taken to attract visitors, draw them in, and retain them. Fortunately, this project came with a community that was already there, just dispersed across 3 or 4 different sites on forums; 1 point for us. The downside is that the hunting/fishing crowd are not really very technical, are used to sites that are visual trash like this one, and are habitual people so they don’t leave the community they are already in if there is not some incentive to move.

One year ago today my company launched our first site, trackmytrophies.com. Of course, the company didn’t actually exist yet and wouldn’t for over a month, we were brand new to the technology stack we were building the site with, neither of us were extremely familiar with design or design tools, and we both had full time jobs working for someone other than ourselves. The site was built on Pinax 0.5.1. There was an early beta of Pinax 0.7 at that point but, for people new to the Django/Pinax world it was completely impossible to deploy, I spent ~17 hours, over 2 days, trying without success to deploy the site. At that point I decided to revert to the stable Pinax 0.5.1  which still took me 8 hours to deploy, but deploy I did.

Over this last year a lot of things have changed: we have become a lot more familiar with the platform we are using, our design skills and tools have increased, and we are working for ourselves…technically (we actually work for WebFaction). We have experimented with different layouts and designs, worked with serving our own ads (OpenX community is shit, don’t use it…), we’ve broken shit, read upgraded Django to an incompatible version, and we’ve even helped patch a minor bug upstream.

Enough of the boring stuff, here are some community stats:

  • 297 registered users
  • 612 uploaded photos
  • 10,000 total visits

…and we are not done yet. We have  a lot of ideas that we are still working on; there is a completely new design coming along with *many*, other backend upgrades that will be transparent for end users.

Here’s to the next year ending stronger than the first!

Business is hard. Part 1.

I am behind on my #P52 by a couple weeks so I am going to be catching up over the next few days.

Self help books and thousands of books on the Internet would have you believe that starting and running a business is easy, that it doesn’t take much, and that you will be better off for it. Web based businesses are touted as the ultimate business venture, you can make large sums of money building Web sites and web services for people, because you’ve a book on PHP and MySQL…what else is there to the web?

That is bullshit.

Starting a business is easy, building value is hard, in the State of Utah you simply go to http://business.utah.gov choose your business name, type, and enter the required information. Once you have completed those steps you pay your fees and get your FEIN from a link on their page and you’re set. You have a running business. Now what the hell are you going to do?

Now you, if you believe the hype, start working on your gold mine, Web sites, right…

Chances are you are still working a day job so that you can pay your bills which limits your time working on your own projects so you need to work extra hard if you want your own business to succeed. If you get a couple entry projects chances are you will realize you didn’t know exactly how some integral piece of the project works. If you are extremely unlucky you are also a student, have a family, or both.

Now the problem of time management rears its ugly head: how are you going to spend every moment of your day? There are not enough hours in the day to do what you need to do. Here’s how you might spend a day:

  • 8 – 10 hours at the job that pays the bills
  • 4 hours for school
  • 1 – 2 hours for homework

That is a total of 13 to 16 hours, now add sleep 11 – 8 hours, you haven’t eaten no time has been factored in for commutes or waiting…and you haven’t spent any time with any one other than the people you were in direct contact with at one of the above places. Of course, you will have days off or days without school so there are brief times when you can catch up on things that you are not getting enough of, like sleep or homework time.

How long can you viably sustain this pace? How many days of straight work before you are just too tired to do anything? What about support? If you *have* customers there is going to be a time when they need help or have questions and, if, you get a client from hell you will spend *a lot* of time dealing with his/her issues.

The time table above also doesn’t add any time for your new business or recreation. What do you cut out to make room for everything? What part of your life suffers? Who do you cut-out?

I still don’t know.

Quick post this week.

Edit: It seems that the publish call didn’t go through all the way so I am publishing it again.

As a contractor I spend a lot of time working on projects other than my own. To keep track of the things I need to do for each project as well as University classes I have been using Things recently. Both Things Mac and Things iPhone have greatly helped in keeping me organized between my work, client work, and University classes. Not to mention home. The price is a little steep for both of them. I don’t really know if it was worth the entire $60 since there is no push feature. I am confident from CulturedCode’s awesome status page that the features will actually come out so I considered it a future purchase.
For time tracking I am currently using Billings and Billings Touch, together both are fairly expensive as well $55, if you want to be able to sync between them. I tried a couple different web based apps as well as a couple other Mac
specific apps for time tracking but the rest were not as comfortable or powerful enough for me to use. Billings takes a second to configure and isn’t very intuitive slips can be marked as done but when a project over laps a month it doesn’t really seem to be useful.

All in all Things and Billings are just the apps I have been looking for to help manage my time and task list.

Thoughts about Java and Python.

In my Computer Science course I was asked to write a program, in Java, that would compute the powers of 2 from 2^1 to 2^20 using only a while statement. At first I tried, with just the basics that we had learned so far, to create the program. Things did not go well because I couldn’t get the powers to work correctly using pre or post decrements. After I looked through the extensive Java Math library here is the solution I came up with:

Coming from a completely Python world, I wondered how I would have implemented the same program in Python. This solution is probably not the most elegant solution but Java was very heavy on the brain while I wrote it.

A couple of things I really missed from Java when coming back to writing Python were:

  1. Post and pre increment, I understand why Python doesn’t have them but damn are they useful
  2. Brackets for the while statement, I know brackets are horrible and messy but it really makes the start/stop of a code block easy to follow…fuck Ruby and its “end” command that is just ugly.

I really like the way Python’s “print” values work. It is much nicer to use %s inside the code and then add % (count, multiplier**count) at the end of the statement rather than using the “+” and variable names.

In the Python world Java gets a lot of shit from a lot of people. Granted, Java does have its share of problems and oddities but it is an extremely powerful, well backed language. Oracle’s support of Java after their acquisition of Sun Microsystems has dramatically increased since a great number of their products are built on Java. Probably the strongest piece of the Java programming language is the Java Virtual Machine. The JVM is so versatile, that, practically, every language can be run on it. There are implementations for Ruby (JRuby), Python (Jython)[1], and even, my favorite web framework, Django (Django-Jython)[2].

With Django and Python gaining traction in the Enterprise world Django-Jython and Jython are perfect building blocks for organizations that *have* to run Java for some of their applications or middleware but want the ease of use that comes with Django and Python for their internal or even external web teams. I like where things are going and I am on the bandwagon with both languages.

[1]: http://www.jython.org/

[2]: http://code.google.com/p/django-jython/

Meta and random musings.

Shorter (read: less content) blog post this week because life has been overly strenuous this week. School has become, almost overwhelmingly, full of homework and reading assignments as well as programming assignments. Besides that, work has been extremely tiring because of the workload and being short handed (for completely valid reasons –  I don’t blame any one for being where they are, under the same circumstances I would do the exact same things). Life at home has also been stressful because of all of the other factors.

Perhaps the most amusing thing I have seen today is http://www.michaelv.org/ which is a Javascript rendition of Windows 3.1 (the third operating system I ever used the first being DOS the second Apple something). This is where the meta part of this post comes in. Inside of the Javascript Windows 3.1 you are allowed to open a browser and because the browser runs Javascript you can once again open the same web page (Windows 3.1) over and over again, currently I am at 10 windows open but the screen shot only shows 2:

This can go on, I am assuming, indefinitely as long as you correctly format your window sizes. This  project gets 5/5 pyl0ns from me.

More amusing software that I found today, because of Jeff Croft (http://twitter.com/jcroft/status/81415197100) is exactly what I was looking for to make my transition from work, where I use Firefox as the default browser, to my regular browser (Chrome|Safari) much easier. I had looked for AppleScripts and tutorials to see if I could find some way of programmatically setting which browser was my default but my Google-Fu failed me. Now I can simply create 2 “programs” that can be launched from LaunchBar that will set my default browser without all of the extraneous clicking, plus it runs on Jython which is just cool since at this point in my life Java and Python are the only things I am focusing on. I highly suggest checking Project Sikuli out, there has to be something in your life that you can automate.

“The Book of Eli” – don’t waste your money. *spoilers*

I normally don’t go to the theatre to watch movies (I have a nice size TV and a good surround system) but, occasionally, it is nice to go to the theatre and watch a movie. This was not one of those times.

Watching the trailers for “The Book of Eli” had me believe 3 things:

1. Denzel is a badass

2. He has a magic book

3.  Gary Oldman wants to take it from him

The first half of the movie is spent on establishing my number 1 assumption with Denzel fighting and killing dozens of people with a sword, gun, hands, and what ever else he could use. At the end of everyday he spends time reading assumption number 2. After he reaches the town that Gary Oldman runs the movie starts to go down hill as we learn that this book is “The Bible” not just any old magic book. (queue boredom) Gary Oldman wants to use the words of “The Bible” to make un-educated people follow him, tricking them into believing it, and thus set himself up as king of the world (how early Christian of him).

*More spoilers*

From there the movie gets boring and predictable, the only reason I didn’t leave (I’ve never walked out on a movie before) is that I wanted to find out what was out “west”. Turns out that “west” was Alcatraz where Alex (from “A Clockwork Orange) is a crazed looking old man who prints books to give back to the world. The only real plot twists from the middle to the end of the movie was:

1. The book is in braille

2. Denzel was blind the whole move (but God let him see so that the book could make it “west”, yay God!)

The book doesn’t make it “west” but luckily Denzel memorized the entire book so he could repeat it word for word when he got there (I know, right?).

Summary:

The movie, from the middle on, is shit. The first half is good for action. If you are going to watch it, wait until there is a decent torrent – there is no point wasting your money.

My Battle of Twitter Clients.

Recently (after upgrading to Snow Leopard) I have been forced to find other twitter clients than the one I had been using for almost a year, Nambu. As a part of the MacHeist offering I got a copy of Twitterrific which I tried for a couple weeks…I hated it. Here they are with their pros and cons:

Nambu (10.5 version):

Pros:

  • Multi-account setup is easy
  • Good layout

Cons:

  • On Snow Leopard, if left running will use 2.0GB of RAM

Nambu (Snow Leopard version):

Pros:

  • Smaller RAM usage
  • Free

Cons:

  • New UI is awful
  • The break outs of retweets
  • Resizing window doesn’t resize tweet field

Twitterific:

Pros:

  • None, simply awful

Cons:

  • Always on top
  • Horrible UI
  • It costs money

TweetDeck:

Pros:

  • Multi-column so you can see all of the info you want

Cons:

  • Ugly – even if the color scheme is changed
  • Adobe AIR
  • Multi-column

Tweetie:

Pros:

  • Beautiful UI
  • Wonderful multi-account setup
  • Overall, very enjoyable

Cons:

  • Pop out compose field
  • Search setup is odd and clunky
  • Dock icon doesn’t show number of tweets
  • Number of tweets isn’t shown anywhere

Echofon:

Pros:

  • Simple, clean interface
  • Number of tweets is clearly visible
  • Search is quick/easy to use
  • Compose bar is built in
  • Slide out drawer info is helpful

Cons:

  • Multi-user accounts are clunky

After my full evaluation of these clients I’ve found the perfect twitter client for me would be Echofon and Tweetie smashed together, giving me the in app compose bar with the left sidebar and the slick interface that Tweetie has.

I’m still unable to decide between Tweetie and Echofon so I am currently using both. (side note: leaving 4 twitter clients open at a time quickly reaches the API limit.)

TextMate to VIM and back, why I made the switch.

About 6 months ago I made the switch from TextMate to MacVim because of a couple things:

  • TextMate is kinda, not really being developed anymore
  • Many other options are out there
  • TONs of Python developers post about their editors all the time
  • VIM is hardcore and installed by default on many Linux systems (which I work with all day)
  • I wanted to take a side in the holy war (Emacs vs. VIM)

After doing a lot of research on the editors that were available I tried out Aquamacs and played around with it for a while. Emacs is powerful, as long as you install the right plugins…and know LISP(ugh!). Emacs is just too much pressing of the control button and shift and other modifier keys, I have carpal tunnel  and pressing Control + (modifier key) is too much if I have to do it repeatedly.

I switched to MacVim, fewer modifier keys, much simpler to use and no knowledge of LISP is required. VIM syntax is much better, but still coding to be able to code isn’t really ideal for me. Luckily I found the right plugins and the right tutorials and got everything working, I even switched to MacVim as the default editor for everything. I spent the next 5 months learning how to use MacVim and since, I got a new job, doing support for the best hosting company in the world, using VIM was very helpful.

Recently on Twitter I saw this: http://justinlilly.com/blog/editor-stats/ After looking through the screenshots of all of the different editors that are out there I began to miss using TextMate with its Cocoa-ness and modern feel, VIM is very archaic and keyboard dependent, while being ideal for some people is not idea for me). I installed all of the bundles that I wanted, and, there was a bundle for everything that I wanted. IMO, using “svn co …” is much easier than downloading, unzipping, and copying the files to the right directories and editing vimrc to make sure that the new modules are being used when they are supposed to be.

So now I am back to using TextMate as my default editor and I am enjoying it tremendously. There is no coding involved to change the background color, no command to invoke to have the sidebar open, no navigating with the keyboard only when using NERDTree, no more having to type NERDTree, and most of all bundles are so much better, faster to install and modify than with VIM.

I am still, eagerly, awaiting the release of TextMate 2 but for now I am happy to be able to change things without code so that I can spend my coding time doing something productive instead of configuring my editor.