RSS

Monthly Archives: June 2012

BitBucket vs GitHub

I tell you… what a hard decision to make! I cannot decide which tool is better for my DVCS needs. Clearly the toolset is deeper if I go with GitHub. Not only does GH have lots of tools but there are plenty of 3rd party tools too. Some of the slicker GUIs include Tower for OSX. On the downside; if you have to install the CLI client it can get squirrely  because there are a few different languages in the dependency tree although I’ve never actually had a problem deploying it.

On the other hand, the pricing for BitBucket is better when you consider my shop. I’m “mostly” a sole contributor for my company and having an unlimited number of private and public repositories is reasonable and cost effective. The other thing I really like is that the CLI is written in python and mostly python.  I think there is some native C code that compiles but I cannot be sure. I know that it installs in a ver stable fashion.

As for which has better. I’m not certain. I know that they are both quality applications. The companies behind them are strong. Both are widely used. Both are integrated into the GO tools which I really like. Some people talk about branching and merging and the differences there. I’m not sure I care. I’ve rarely had to branch/merge.

One last note. GitHub has added some sort of subversion(SVN) framework to their platform and BitBucker has added a GitHub framework.  I’m not sure if this is an alias type of thing or if it is a real deployment.

Sorry I cannot offer any solutions. I use them all and I’m still trying to reduce my footprint.

PS: an interesting thing I just noticed.  The initials for GitHub are GH and the shortcut for BitBucket -> mercurial is HG.  HG <=> GH  ?? Fun!

PS: two additional mentions. MacHG is a good OSX GUI for HG. SourceTree works on both HG and GH.

 
Leave a comment

Posted by on 2012/06/29 in Tools

 

Tags: , , ,

What is middle management good for?

Rosabeth Moss Kanter recently wrote an article for the Harvard Business Review. She has a number of views on the subject of management hierarchy and I think she misses the point. In response…

First of all, as an example, middle management is where executives and upper management get to take off their training wheels. There is a reason why Donald Trump has an apprentice program and not just the TV show. There is a reason why government does pretty much the same. I would not expect some undergrad with a polisci degree to run the country. Without middle management the revolving door at Yahoo and HP would become a game of chutes and ladders. (The last thing I want to see is all upper management graduating with Harvard MBA and no job experience)

Second, it’s not the first time that corporate america has ejected middle management in the last 30 years. The last time was because of the recession/depression or whatever it was. This covered manufacturing and technology companies. And in the end it was a huge mistake. There was so much intellectual property in middle management that companies took years trying to retool for the next cycle.

Thirdly, your post was tweeted by an agile coach. I respect this person very much. And his tweet of just the article’s title suggested to me that there is an agile twist to this as most agile teams and companies are very flat. This sort of suggests that a rank and file worker at a company that practices agile from top to bottom is (1) a pawn to be replaced (2) expendable (3) not really going to advance in responsibility because the ratio of workers to managers is so high.

Finally, this article suggests that we (in the US) are moving from a capitalistic society to socialistic one and while there are some benefits in both; the problem is that we are democratic capitalists. We want to win the lottery. We want the new shiny toys, cars and houses. So until Madison Ave stops selling gold plated cell phones, and MTV stops selling gold plated teeth and “cribs” and until Donald trump moves into the 4/3 next door to me …

Mrs Kanter I appreciate that you took the time to write this article but I see it as a warning of yet another economic disaster.

PS: There was a period of economic growth after the last recession because many of those middle managers started their own companies. I’m not certain that can happen again. I’m just an out of work programmer with 25 years experience and with my dependents I need middle management responsibility and salary; I cannot compete with high school and college grads because they do not have houses, cars, families, insurance payments and so on.

 
Leave a comment

Posted by on 2012/06/28 in business

 

Why is middle management on the decline again?

I really hate this subject because it effects me directly. Back when Reagan was President we had a huge recession. As a result middle management was all but obliterated from the middle corporate America as management thought this was the way to survive. And we learned two important lessons from this reaction. (1) recession almost turned into depression and corporate America was almost erased (2) many middle managers spawned successful startup businesses. (the two are not offsetting even with the dot com boom and bust)

Now, it seems, that we are in economic hard times again and whether it’s a recession or depression is for future economists, however, I do know that middle management is being erased again; and top managers are calling it lean or agile. As a result the execs are making more money (as part of their “incentive” packages) and entry level positions have become highly competitive as the job market shrinks without rational stimulation. I wish that it was a fair competition but it’s not. It favors the young person. Not because they are smarter, faster, knowledgable, malleable, “agile” or even efficient but because they are cheaper. They do not have houses, cars, families, college tuition, electricity, water, heat or A/C. And of course retirement considerations.

Top-down total-agile-management might work in the EU where just about everything is socialized and retirement assured. But here in the US, where every 2 to 4 years we talk about how bankrupt the federal retirement system is, this obliteration of middle management and a genuine career path is paramount. Companies that do not support a middle management risk losing their knowledge base, fail to mentor or apprentice their line of succession, and are only interested in the short term benefits.

So my message to all senior and ‘C’ level executives. Start thinking about your company as if it were to exist for another 200 years and stop thinking about your own personal legacy. If you take care of the future then the future will take care of you.

 
4 Comments

Posted by on 2012/06/27 in business, future

 

My wishes for Apple and iOS

I have been thinking about the number of PCs that I have recycled and the number that need to be recycled. And then I think about my toddlers that could benefit from a computer but are clearly not ready for anything that looks like Windows or OSX. But what is amazing is that have just about mastered iOS. They can play games, recognize and switch games by their icons, view pictures and navigate the albums.

So here’s my wish. I want to recycle my old PCs by installing iOS on it so that my kids have something to play with. I just don’t see myself buying them a $750 iPad at the age of two and the iPad that I’m using is not ready to be recycled nor do I have more than one iPad that hand-me-downs are an option.

 

Tags:

Vizio is on the move

[Update 2012-06-26] Vizio just announced “CoStar”. It’s a GoogleTV appliance that costs $99USD and has all of the basic features like video and radio from the various media suppliers. The price for the device is inline with AppleTV now it’s a matter of comparing the cost of the media.

It’s been a news story recently. Vizio, an American company and maker of reasonably priced TVs, is branching into making computers. Their laptops and all-in-one desktops are aesthetically designed with plenty of “out of the box supported” modern features(no custom device drivers) and none of the sponsor-ware. Which leads me to a number of concerns:

(1) Is the $899 starting price tag really the best price? If you look at the TV market and compare; Vizio was never at the utter bottom but their prices and quality make them onto any gift-list I imagine. However, the price is closer to Sony and Lenovo instead of Gateway and eMachines. I would like to get a hands on to see it in action. I would also like to know if *nix or *BSD are viable.

(2) While the OS is supposed to be an out of the OEM box install of Windows I find myself being skeptical. WIthout actually having a machine to evaluate I could not tell, however, one of the common themes over the last few years has been the general move to social data capture. If the general consumer had any idea how much information was included in the “phone home” feature of many of their installed and commercial applications they would be concerned. On the one hand this might have offset the cost of the software but what is the real cost? That’s another story.

(3) Just how functional is an OEM install of Windows? My recollection is not much. Once you get past the deeply embedded Internet Explorer and some of the basic Control Panel, MineSweeper, Calc, Remote Desktop, NotePad and a dozen other tools and utilities you’re done. I would hope that, by now, Microsoft is offering some Express versions of it’s software “by default” as part of the OEM install in order to compete with OSX. On the one-hand I’d rather install them separately so that I could decide whether or not to install MS Office but on the other hand when considering a computer like this for Grandma/pa I’d rather complete their install with as little friction as possible.

 
Leave a comment

Posted by on 2012/06/25 in architecture

 

Tags: ,

Freelance IT / Programmer Consumerism

A few days ago I came across this article and as I ponder some of the projects I’m working on, clients and missed opportunities I’ve realized a few and important facts.

Every SOHO and small to medium business out there depends on computers and software just as much as they depend on electricity and the dial tone. So it’s a wonder to me why many of these businesses do not hire companies like DockYard. Not to implement some critical or non-critical application at $120 – $250/hr or $4,000 – $7,000/wk or more. But as a resource to make sure that the High School kid, summer intern, or college CS major does a good job or gets a solid background or framework to begin with.

I’m not trying to take jobs away from this cadre of would-be future Zucks; I’m trying to say that you, as a business owner depend on your systems and applications to keep your operating costs down and your productivity up. So when your systems are buggy, damaged, or down you’re losing money through failure to convert a customer, loss of a customer, or increased support costs. So it is your best interest to take that into consideration the next time you have to build and deploy a critical application based on the experience of a hello world level of experience.

PS: This editorial was paid for advertisement for the services of Florida Freelance IT LLC. I hope you’ll consider me for your next project.

 
Leave a comment

Posted by on 2012/06/23 in business, for hire, future

 

Sandboxing OSX apps is a good start

The idea of sandboxing OSX apps is not new or unique. Both OSX and Windows have features that prevent software, particularly 3rd party apps, from accessing various physical and data resources but it’s not without it’s detractors most of which are just haters. What bothers me is that many in this verbal minority have an agenda whether it’s selling more anti-virus services or their one of those users that does not care.

The reality is, however, system or computer security whether it’s in the form of in-built firewalls, Little Snitch, or sandboxing has more to do with protecting the brand rather than user’s data. One other side effect is going to be the cost of support.

(1) the first thing you’ll notice whether you’re installing software using the appstore or downloading directly from the vendor’s website is that the app is being installed as a “shared” app which means that the user needed to be the administrator or have administrator access. And since the installer is built into the application which has been promoted to administrator could install much more than just the application. (think trojan horse)

(2) disk space is relatively cheap these days even though SSD is becoming more prevalent (and is more expensive than the mechanical alternative) prices are falling and it’s still pretty efficient. So having multiple copies per user is not terrible.

(3) Sandboxing means that the user would install the app in their user folder(s) and that the app would only have access to it’s own data. On the whole this is a good idea, specially if you’re talking about something like quickbooks where the application’s data could be encrypted either by the sandbox or the application.

(4) At some point, however, applications will need the ability to bridge sandboxes. It seems to me that bridging is a permissions thing that the kernel is ideally suited for.

What does all of this really mean for the user experience? On the one hand I believe that it’s going to eliminate the biggest problem for most computer users; and that is the dreaded “you need to reinstall the operating system and all of your applications”.

On the one hand sandboxing is meant to protect the operating system from the user applications. On the other hand it’s also meant to prevent one application from accessing other applications for either innocent or nefarious reasons.

 
Leave a comment

Posted by on 2012/06/23 in architecture, security

 

Tags:

Assertions in Java and Go

First and foremost assertions do not exist in Go at all. The language designers had a very specific opinion about it. On the Java side assert was converted to a keyword. This too is interesting and yet maybe not so much.

When servers/daemons are designed in the erlang way where failure is an option then things like assertions are ok. The application will crash, possibly generate a core file, definitely generate a log entry, and then restart. It could be the best of all worlds, especially when you have certain expectations.

Here’s the thing. Unlike the Python and erlang idioms java is strongly typed so it almost makes sense to test input ranges etc and throw exceptions when things go bad. Assertions on the other hand do pretty much the same thing by setting the expectation during development and testing. The idea that the java language designers had was that assertions cost time and space; and if assertions can be removed from production then speed and size are recouped. However, during production you lose the validation that you had during testing and dev. And while TDD etc are supposed to perform exhaustive testing that’s just never the case. Code coverage or not.

If you think I talked myself around in circles just now… I agree. My head is spinning as a result. So here is the bottom line. Forget the keyword. Use the IF statement and generate your own AssertionError. Sadly you won’t win any coding awards for beauty or brevity but you have a chance at consistency and accuracy.

 
Leave a comment

Posted by on 2012/06/22 in architecture, ProgLang

 

Tags: ,

It’s never really the __END__ in Perl

One of the really neat constructs of Perl is the __END__ token. I do not know the origin, genus or species of this token but I like it. Back in the day when I was a contractor at IBM I was handed the tomb called ISO-9001. I don’t remember much of it anymore other than one or two facts.

(1) every page that is numbered needs to be numbered thus:  ”1 of 10″. The reason for numbering the document this way was to insure that the reader would know when they reached the end of the document.

(2) similarly the author was required to identify when the reader had reached the end of the document. I do not remember what the ISO token was for the end of the document but over the years I have adopted “# # #”.

It’s because of these rules that I have, out of habit or some deep seeded need to conform, that I always put some sort of tag at the end of every source file to indicate the EOF. And since Perl has this tag already defined… and with the exception of COBOL and maybe Fortran (I do not found forth, pascal, or prolog) it just made sense to me and so I keep doing it.

It interesting to note that, in Perl, __END__ is the end of the code and not the end of the file. Oh well.

 
Leave a comment

Posted by on 2012/06/21 in ProgLang

 

Tags:

N-way file merge Perl, Python, Go and Lua [Java, Ruby]- Compared

[Update 2012-06-22] Here is the java version of this assignment. It is/was awful. Once you stray from OO, in java, the code inflates like a sea monkey and clearly OO is over the top overkill.

[Update 2012-06-22] Here is the Ruby version of this assignment. I like it’s compactness although that came at a steep price as accessing hash elements meant clunky dereferencing and string comparisons were just awful. [That was an error on my part; works as you'd expect]

Not to beat a dead horse but I now have 4 example implementations in Perl, Python, Go, and Lua.

I did my complaining about Lua in a previous article, however, in summary here… this example in Lua is verbose and lacks consistency. I’m not expecting to reduce this to a single LOC (line of code) but I would have liked some additional APIs that would have implemented more efficient algorithms based on internals knowledge. Or at least well documented idioms.

The Go example was fun because the version 1.x of the toolset was simple to use. I would regularly execute “go run merge_tick_data_hash.go file1.csv file2.csv” and it would run like a champ. The only challenge is/was that simple errors that most dynamic languages permit until the code would actually execute would cause the compiler to barf. And initially I had no idea they were compiler errors; but it was easy enough to get used too. The compiled version of the code was lightening fast to startup and execute even though it was 1.4M bytes in size.

The Perl version took some doing. I was able to reduce the LOC and optimize the code quite a bit. I think there is still some room for improvement based on the Python implementation which was just a few lines smaller because it had the benefit of being written last. In this case I sacrificed adding the filename to the %ticks hash and that reduced a few LOC but added some de-referencing which “might” be optimized by a good JIT; cannot say for certain.

I’d like to compare these implementations to a Ruby version but I’m just not a fan of RVM this week. As for the remaining candidates. I have to admit that I really liked the Go version, however, I do have a complaint that while “Go” seemed like a good name for the project when it started. (prefix for google) right now it’s hard to do google searches. GO is such a small and common word that there is no way to optimize searches. One strong advantage is the static linking once the project is compiled.

 
Leave a comment

Posted by on 2012/06/21 in ProgLang

 

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