RSS

Monthly Archives: July 2011

MacBook Air and Lion in a semi work environment

I really like my MacBook Air but I have a complaint. I bought my 11″ MBA in Dec 2010. It was love at first use. I had an idea I was going to like the laptop and that I was going to use it when I travelled or visited clients. In fact that’s exactly how I have used it since. There was also one other unexpected use-case… when I was in the kitchen with the kids I could do a quick search here and there. I might even check on my client’s systems between spoons of oatmeal.

Recently I upgraded to Lion and there has also been a flurry of update activity on the other apps that I’ve installed or purchased. But the one thing remained constant. I was dialing in remote to access my client’s development systems and never doing any development on the MBA at all. I had done this before on my other laptop(s) when there was only one of them without a backup. But now I was in my happy place with backup hardware and cloud services.

Now I find myself having longer and longer edit sessions on client code. I find myself on airplanes where wifi does not exist of the latency is just too much to bare. There’s also the limitation of the 11″ screen. It’s sufficient for editing an email but using Google apps to draw some pictures or make a presentation is a pain (yes I have keynote but I’m going for the seamless cloud integration thing). And long edit sessions with multiple small windows is impossible as my latest project has no less than 10 terminal sessions open on iTerm. (While I’d really like a pair of 30″ displays for development I manage with a single 27″ during those dark coding sessions)

As for security. FileVault is nice. It encrypts the entire home folder, however, since almost everything is executed out of that folder then almost everything is decrypted with every use. And everything is encrypted on the way in. There is no real good way for me to selectively encrypt and protect my personal information and the information of my clients. (so I do everything on the web when I can) In place of FileVault I use Espionage. It allows me to select when to encrypt and when to decrypt it. This way if the application is not running then the data is secure which is slightly better than a decrypted home folder when you’re active. An interesting new challenge is that Apple has created a folder for Syncing with iDisk. This folder can contain sensitive data too. Once Espionage get’s it you lose 10G of disk.

So here I am… limited window, limited disk, limited network, limited CPU. I essentially have a color/graphics terminal circa 1983. But here is my advice for Apple and AT&T. a) I need an iPad that is about the size of a piece of paper (8.5″ x 11″), b) I need a new MacBook Air with more memory, bigger screen and bigger disk, c) and I need a better cell network that let’s me really do all my work in the cloud.

 
Leave a comment

Posted by on 2011/07/29 in Tools, Uncategorized

 

Tags: , , , , , , ,

Chef installation : you gotta be kidding me!

Last night I started working on puppet and things were iffy. At least the server and client installed from their ubuntu packages. Admittedly there were errors in the end but they might have been mine… and there are some compatibility issues that have been documented. So I switched to chef with good intentions.

Before I get to the details… in hindsight I must have been nuts to try chef. My first clue was the list package dependencies; there must have been 50+. What were the designers thinking?

First of all they need a DB and an MQ; and I think I like the idea that they are using packages that exist in the open source environment… but I am amazed that they would use such beheamoths. First of all CouchDB and RabbitMQ both depend on erlang and all those extra packages. When a standard SQL-type DB like SQLite or if they really need a document repo then MongoDB would be fine. At least the packages are small, available in binary form and they have a REST interface that is easy enough to write too. Of course there are so many other DBs that are integrated directly into Ruby or with shallow dependencies.

The same can be said for their choice of MQ. RabbitMQ is the thousand pound gorilla. There are two strong candidates in ZeroMQ and beanstalkd. Both are extremely lightweight to install and deploy. They are fast and reasonably functional.

So even though I have a personal dislike for all things ruby (based on personal experience in the Birmingham Alabama area) it can do the same job that other dynamic and non-dynamic languages can. Performance and some of the edge cases not withstanding… I hate deep dependencies… (same reason I dislike most package managers including maven).

 
Leave a comment

Posted by on 2011/07/22 in database, nosql, ProgLang, Tools

 

Tags: , , , , , , ,

The blog-war is on

I’d really like to be able to syndicate my posts within wordpress but the only way I see that happening is with a personal installation on my own servers. The widget library does not seem to support the defacto wordpress service. So I started looking at Blogger from google. And I have to say that I think I like it.  Of course I still have to work on email publishing and some keywords but it seems to do the trick. I also like that the monetization is semi- connected to google and that I do not have to pay extra for a custom domain if I’m already registered.

So let the evaluation begin.

UPDATE: score one for WordPress. Blogger does not have a box.net widget.

 
Leave a comment

Posted by on 2011/07/21 in Tools

 

Tags: ,

When is auto update is bad?

Always.

Actually there are a few times when auto updating your software of virus definitions is a good thing. That is usually limited to when you are talking about “top 100″ type vendors. For example I do not mind auto updating anything from Apple, the AppStore (Mac or iPhone), and I do not mind many of the software vendors that have been around for 10+ years and have a solid reputation. And I generally accept MacPorts.

But then this one caught my eye.

I started off by thinking that this was going to be an easy install of what looked like a decent application/script. The script was going to tell me everything about what programs and processes were connected to the outside world. (Kinda like little snitch) But as I read more of the online documentation I saw that a) it was from a college; and b) it was going to autoupdate.

I was a college student once and I did not do anything really stupid when I was that age but not everyone is like me that way. But I was incredibly curious and if I had today’s tools would I have been that nieve or straight. While this shell script looks interesting I’m not going to install it out of general fear.

PS: they could have installed the script in userspace. They did not have to request the admin password.  And for those of you that did not understand the above… just think about trojan horses and what lay inside. Computers are cheap enough… I just cannot afford the time required to rebuild one from the ground up.

 
Leave a comment

Posted by on 2011/07/11 in security

 

Tags:

PEP-8 is an awful document

Ordinarily I do not comment on RFC or PEPs and the like. They are written by people who are either experts in their fields (hopefully languages) or people who are clearly students of the art and craft of software development. That’s not to say this I follow these guidelines to the letter… for example “do not code defensively” from the erlang best practices document makes my skin crawl.

So as I re-review PEP-8 I’m reminded of the first time it was introduced. It was not a pretty day or a fun time. It was everything that a good software development manager tells you can and will go wrong when the inmates run the asylum. So while I think it’s generally a good idea… I hate the PEP-8 partly because it’s poorly written and partly because the way the team deployed it. Maybe they are one in the same. (I don’t think anyone referred to Knuth’s work on documentation or documented code)

So here is my summary of PEP-8 in order to cool things down and make it workable.

NOTE 1: code is often read more than it’s written.

NOTE 2: style guide is about consistency.

NOTE 3: use your best judgement.

Indentation: 4 spaces, no tabs. when wrapping lines use at least 8 spaces but keep the like items together.

Line Length: limit all line lengths to 79 chars.

Blank Lines: use sparingly. 2 between classes and 1 between methods.

Encoding: ASCII or Latin-1, and with Python 3 use UTF-8

imports: each import statement on it’s own line. group the imports by “standard python”, “3rd party :”, and “app specific”

whitespace: good but do not go crazy. Add a single space in assignments but not in function declarations.

single line: do not put multiple statements on a single line.

NOTE 4: keep your comments up to date

block comments: the same indent level as the code

inline comments: use sparingly.

NOTE 5: see PEP-257 about docstrings

version: this only applies if you use CVS or subversion.  Since I use git and hg, they do not apply.

naming conventions: whatever you use make it obvious and distinguishable. Avoid ambiguous lettering like ‘l’, ‘o’ .

package or module:

class:

exception:

global:

function:

function arguments:

method names:

instance variables:

I’m into this for an hour already and I’m bored out of my mind. This just seems so obvious to me.

design for inheritance:

programming recommendations:

So good luck with this. With any luck you’ll have a strong manager or boss. You’ll have a decent understanding and it’s won’t be confused with anything you used the other most recent language you’ve mastered. And that your intuition is something you can rely on. (remember reverse hungarian notation in OS/2 and Windows?)

 
Leave a comment

Posted by on 2011/07/11 in ProgLang

 

Tags: , ,

Perl is Better than Python – The Killer App.

I just started working on rewriting a fully operational acquirer gateway. I originally wrote the application in erlang and now I convinced my client to implement it in Python. I happen to like python a lot and now that perl 6 seems to be more of a fork than a version python is even more tasty. And that’s when it happened!

I wanted to “over” document the new system. Partly because the erlang version was very well undocumented but I also wanted to code the documentation inline… and I was thinking perldoc all the way. If you have not used perldoc then you don’t know perldoc. It’s the easiest way to document perl applications and I like it.

So naturally I wanted the same syntax or better for Python. Unfortunately it takes perldoc to a new level. So much so that I hate it and I want to try to reconsider my python decision. I may have to try a module or two in perl just for fun.

Perl has it’s CPAN and Python has it’s setuptools(easy_install) but nothing compares to perldoc. perldoc may be the killer app. Long live perldoc!

 
1 Comment

Posted by on 2011/07/05 in ProgLang

 

Tags: , , ,

Concurrency on the JVM

I just purchase a couple of books from PragProg; Programming Clojure, Programming Scala, and Programming Concurrency on the JVM. (I’m starting to think that I already purchased the Scala book some time ago and that now I have  a dupe.)

As I’m about to embark on Clojure and Scala for the 2nd or third time I’m beginning with many of the questions I had when I started on Erlang and LUA. What does it mean to me? What is the current mindshare out there? Are there any real projects? Is there enough full-time and contract work out there to warrant even the cost of the books and the time lost reading them?

And that’s when I get really frustrated because Scala has a section on “intermixing with java” and then my head starts to spin as I remember that Lift-web (a webserver written in scala) is not really written in scala. It’s actually a combination of Scala and intermixed java (notably Jetty).

And right about there is when I lose my steam. When you are a fully vested java programmer and you know all 100B jar file filled APIs with all that it means to you… it’s hard to implement anything 100% native. So that’s the dark cloud hanging over Clojure and Scala. How can they implement all the functional goodness without getting twisted up by all that legacy poison? And so I read on.

[UPDATE: Scala and Clojure seem to intermix with Java a lot. I find this painful because I be not believe that there is a way to determine where the warts are automatically. It sure would be nice if there were some sort of dependency checker so that the graph provided some illumination before projects were implemented. Or at least some developers might contribute where the holes are. I'm about to put these books on the stack again.]

 
Leave a comment

Posted by on 2011/07/05 in ProgLang, Tools

 

Tags: , , , , , , , , ,

Quote of the day

I’m not in the business of selling Erlang. Mnesia has plenty of issues though, we’ve been avoiding it for a few years.

 
Leave a comment

Posted by on 2011/07/03 in nosql, ProgLang

 

Tags: ,

erlang programmers versus the rest of the world

I don’t know if there is a snigglet for it but I just had an IM conversation using Twitter. Normally I would just go on about my business; in this case sleep. But sleep is not coming easy tonight.

The conversation was sort of a point/counterpoint debating erlang programmers to everything else. I tried to summarize things this way:

  • erlang is not suited to solve all problems
  • other languages provide similar services/features
  • current mindshare is sketchy
  • costs are higher for the same caliber of programmer
  • erlang will either go the way of smalltalk or maybe java. either way I will be there trying to make a living. java=mainstream, smalltalk=edge cases.

There are a few things that I did not mention but I think they are moot now. The best I can offer is the right tool for the right job… and that needs to take into consideration the business environment and economics.

In the end, everything is subjective. The person with the purse strings is going to call the shots. That person may not be a geek or technologist. So they may not know much about languages etc… but they are watching the bottom line. And if some VC is going to say… use erlang because we get instant cache for being smart people. They that’s what you use.

In many ways I’m the mercenary programmer. I’ll write code in just about any language out there so long as the checks are accepted at the bank. Some day when I’m the boss I’ll decide what tools we/I use. And I’m sure that someone is going to try to change my mind.

To the future me, good luck.

 
 

Tags: ,

DropBox, Box.net, SugarSync – Terms of Service

There has been a lot of pissing and moaning about a section of DropBox’ Terms of Service agreement. At least this was the first and fiercest monologue I had read. (this was about 2 or 3 weeks ago). However, this morning one of my age old friends from the neighborhood and McAfee talking head posted the same section of the agreement. And while I’m not one to be prodded into action I decided it required some second thought. (I use dropbox to protect my client’s projects as I am sure many do)

At first I could not locate the text in question so I got a pointer from David. He was clearly up in arms and ready to abandon DropBox for good. So I decided to look for some alternatives to DropBox myself. What other vendors/service providers are out there. I’ve tried many of them and they are all very similar but none hit the sweet-spot that DropBox does. Even though there is room for improvement there too.

I use the free version of Box.net for my LinkedIn profile and my WordPress account. So I am familiar with their services.

And shortly after I downloaded the SugarSync iPhone app…. I decided to read all of their TOS’. And the funny thing is… you guessed it. They all have the same text. They all require some level of permission from the user.

(The following links and snippet of text are current as of 7/2/2011)

DropBox - We sometimes need your permission to do what you ask us to do with your stuff (for example, hosting, making public, or sharing your files). By submitting your stuff to the Services, you grant us (and those we work with to provide the Services) worldwide, non-exclusive, royalty-free, sublicenseable rights to use, copy, distribute, prepare derivative works (such as translations or format conversions) of, perform, or publicly display that stuff to the extent we think it necessary for the Service. You must ensure you have the rights you need to grant us that permission.

Box.net  - To the extent that the Services provide Users an opportunity to store and exchange information, materials, data, files, programs, ideas and opinions (“User Content”), you hereby represent and warrant that you have all necessary rights in and to all User Content you provide and all information contained therein. By registering to use the Services, you understand and acknowledge that Box.net and its contractors retain an irrevocable, royalty-free, worldwide license to use, copy, and publicly display such content for the sole purpose of providing to you the Services for which you have registered. In the event that you give Box.net the right to distribute your content, additional terms may apply to Box.net’s usage or distribution of this content.  You continue to retain all ownership rights in any User Content you provide and shall remain solely responsible for your conduct, your User Content, and any material or information transmitted to other Users for interaction with other Users.  Box.net does not claim any ownership rights in any User Content.

SugarSync - After setting up your account and downloading our Software, you can select the Files you want to sync and/or store. You can change the Files you want to sync or store whenever you want. In order to make the Service available to you, we need your permission to sync and store your Files. Accordingly, you hereby grant to SugarSync a license: (i) to use, copy, transmit, distribute, store and cache Files that you choose to sync and/or store; and (ii) to copy, transmit, publish, and distribute to others the Files as you designate, whether through the sharing or public linking features of the Service, in each case solely to provide the Service to you.

I’m not a lawyer and I do not play one on TV. But I think this is harmless.

[UPDATE 2011-07-11 Looks like Yahoo is in the same boat. However, if you read the TOC it seems no different than the DropBox. In the end they might split hairs and read your content and then the whole thing may be challenged in court, however, we're not there yet and it really looks like they are just covering their collective butts when providing services.]

 
Leave a comment

Posted by on 2011/07/02 in legal, Tools

 

Tags: , , , , ,

 
One Page Docs

Creating a library one page at a time.

One Page Bugs

Reducing the friction of writing and fixing bugs or features.

Follow

Get every new post delivered to your Inbox.

Join 223 other followers