RSS

Category Archives: Tools

Rethinking software development

When I read that Apple was ejecting Java from it’s browsers I believe my heart skipped a beat. On the one hand Java, when it was managed by Sun, was very good to me. And now that Oracle owns it I’ve been reluctant to use it and that has nothing to do with Apple’s decision. It’s just the way I see Oracle.

Coincidentally Google announces Dart 1.0, Firefox announces Rust 0.4, Google’s GO is making headway … but most telling is the article, I read today, criticizing FogBugz for implementing their cornerstone application using a proprietary and internal language and toolchain (Wasabi which looks like VB).

So my intuition tells me that if Oracle does not make some serious corrections “we” are about to experience a paradigm shift akin to the magnetic swap that the mad scientists have been talking about for the last 10 years; because:

  • business owners need to reduce their risk – general security and maintain control of the API
  • increase their intellectual property – proprietary toolchains would add some value if they work
  • reduce programmer turnover – in a way proprietary languages will not actually enhance individual marketability (of course you have to get them first)

But if you cannot afford to design and implement a first class programming language… then you’re forced to develop a DSL. And if you cannot afford that… then you have to use someone else’s or something that is open source and liberal (nothing with the GPL; stick to MIT, BSD, and a few others)

In conclusion, and I hope I have connected the dots, there will be a major fracture. A small portion of the developers and businesses are going to go for the 100% commercial toolchain like Objective-C, iOS, .CLR/.NET and then there is going to be another group that is going to go completely open source as in perl, python, ruby, GCC, GO, Dart, Rust, and internal DSLs.

  • javascript is interesting but will be killed along with the JDK
  • Java might fork with a reasonable replacement but the devs working on the commercial version, who are responsible for the current state of affairs might poison the same tree.

Sadly, Google’s current price drop might have something to do with the Java security issues as it was recently reporting that Android had it’s own security issues.

It’s clearly a sad state of the industry. It feels like a huge grey cloud overhead. I hope it’s just a little rain and not a flood.

 
 

Writing good log messages

Writing good log messages is part design, part good practice, part knowing what and when to say it.

Design

(1) You need to decide what exactly you hope to get out of a logging session. Are you going to be debugging bugs, crashes, or other critical events like a forensic accountant or like a whack-a-mole?

(2) Are you going to use flat files, how big will they get, how many files will you keep around? All very important when thinking about backups, disk space, maintenance, recovery, and so on. You might also be thinking about the different versions of syslog-like tools where you can ship the events remotely.

(3) Are you going to store the logs in a DB on the local system and then use sharding to allow for more permanent maintenance? This is interesting because the searching can be easier than grep, awk, etc… Also, considering (4) grouping related messages is easier and you can use SQL-like reporting tools.

(4) Are there some pre-optimizations you want to perform like all logged entries are stored in temp storage until the transaction is complete. Then the data is shipped to the repository for storage.

Good Practice

Treat all of your code the same.  Whatever level of logging you are performing you should be consistant throughout your application. This way you will not be surprised by your results and you will not have to worry about “and then a miracle occurred)

What to Say, Where to Say it

If you are processing transactions then make sure that you create a transaction ID as soon as possible and start using that ID with every log message related to this transaction. This is necessary so that you have a thru-line and so the transaction can be traced.

Also make sure that you are clear as to the intent of the function and what the results were. That also means that the type of entry should make sense. INFO, WARN, ERROR, EXCEPTION and so on.

You might even time the execution of the function.

Warning

One thing to be wary of. Logging can consume your disk, disk I/O, CPU, memory, message queues, database. You can spend more time copying, moving, and filtering your messages that it might effect the ability to produce meaningful results.

For example, using a Redis pub/sub in order to log transactions might seem like a good idea, however, if you consume all of system memory you may end up swapping and then net result is going to be poor performance.

 
Leave a comment

Posted by on 2012/10/02 in architecture, Tools

 

Tags:

I like everything TURBO!

my introduction to programming was BASIC on my father’s TRS-80 Model 3 back in the early 1980s. Shortly after that the IBM PC was introduced and I started writing C code using edlin. But was not long after that when Borland International introduced me to Turbo Pascal, Turbo C, Turbo Assembler, and Turbo Prolog. They might have had a Turbo Basic too, however, but then I was on to other things.

So when a company or team introduces a product, application or library with Turbo in the name it’s hard to resist the temptation to be an instant fanboy. I do not know anything about TurboLinks but I’m going to read the article anyway. Just for old times sake.

 
2 Comments

Posted by on 2012/09/28 in Tools

 

Tags: ,

The Google and Apple Honeymoon Appears to be Over

[Update:2012-09-28] One think I really hate about the iPad and iPhone is that they are linked to a person and not a purpose. It’s one thing I dislike about the Chromebox.  Anyone can sign in as a guest but to get full features you have to be logged in. I hope the Nexus tablet is different.

I discarded the first two drafts of this post because I found myself off target and unable to bridge the gap in order to get back to my point or it was just getting too wordy. So let’s look at the logic bomb a little differently.

(a) Apple is building a product brand and data access brand and silo out of it’s products. With examples like iOS-6 maps vs Google Maps as an example you should see that the Apple stack is closing. The openness seems to be closing partly because of security measures like sanboxing and partly because Apple likely wants to control it all.

(b) Google seems to have all of the data. They certainly have search cornered. Then there is the cookie breadcrumbs where they learn so much more about the web stumblers. The fact that they are now into browsers, operating systems, phones, tablets, desktops should come as no surprise. They implement a number of sandbox strategies too, however, while they use a lot of standards they put up their shields by releasing BETA level code over very long periods. Not all of the features or functions for real openness are actually implemented.

(c) Amazon is the defacto cloud service provider. Most of all startups begin with private hardware for their initial development, however, most will end up using AWS in order to get the product launched. The Kindle aside Amazon has implemented the same elements that Google and Apple have, however, their implementation is virtual.

(d) Microsoft has stolen back the Apple playbook. Microsoft and intel introduced the world to a number of technologies that would have made intel based Linux and BSD impossible. Now Microsoft is competing in the OS, phone, tablet and desktop markets. Their Metro interface is interesting to dig into. I’m not sure it’s right for the desktop but it might. In the meantime they have search(Bing) on top of the hardware and they have a 30 year head start on the competition.

(e) Oracle – I was going to try to find a way to slide these guys in but they’re not that interesting. Sure they bought Sun for which they received MySQL and Java, however, they seem to have killed off the hardware. I’m not certain that was a wise decision. I wonder if arrays of Spark 10K systems would not compete in efficiency in the cloud. So let’s strike them out. If Oracle were to buy Yahoo they would be a competitor in this article.

These are what I call the Tier 1 web properties. (i) they have a complete software and hardware stack, (ii) they have a lot of data like search and other marketing data, (iii) While there is some openness it is incomplete, (iv) their products work well together and have some unifying properties. (one thing I did not mention… now these guys are accepting payments and micropayments. Armed with the actual buying patterns and not just the search patterns this information is even more valuable. Transaction processing should be free)

Then there are the Tier 2 web properties. This tier is made of A-list applications that strictly a one dog shop. Companies like BerkeleyDB, PragProg, DropBox, Evernote, Adobe, Panic and JetBrains. These are companies that you have no problem spending your money on. The risk they would sell you out to a marketing company is low and yet the product they provide serves it’s purpose well and you never feel cheated.

From here things get a little grey. Partly because it’s made up of free, open source, spyware, malware, trialware, charityware, and so on. They are effectively the VHF of the software world. If only one of the Tier 1/2 would acquire them they would become legit and maybe make some money. *cough* MySQL.

So what’s going on in divorce court?

The big boys in Tier 1 are preparing for battle. Their barriers are semi-permeable but not as much as when they were under construction. The Tier 2 guys are waiting for something to happen or trying to make something happen where they can. And everyone else is begging for a seat at the table.

So what am I going to do if I want an iPhone fully integrated into my Google dataset? What about a windows phone running connected to my apple desktop… and any other combination that might arise. I might like my iPhone but I want that new $99 nexus table. In fact I want several. One for each room in the house and one for each kid and one for my wife and myself. I’m not sure I’ll ever be happy with the iPod, Nano, iPad price points. Furthermore, now that I’m testing a ChromeBox for my 2yr old a google solution is looking more likely every day.

I hope I’m making sense now. Clearly we are going in cycles again and the stakes are higher than they have ever been. I’m not looking to pick the winning horse. I just want a seat at the table.

 
Leave a comment

Posted by on 2012/09/27 in Tools

 

Zero Downtime Deploy is a Useless Myth!

I’ve touched on this before referring to erlang’s hot deploy functionality. In that case I was concerned with the notion that transactions would not be reproducible during a hotplug scenario. That elements of the transaction could be mismatched as the various code segments were deployed.

This evening I read a headline that some developer had implemented hot deploy for NodeJS.  Let’s forget that NodeJS not currently a serious production environment and while it powers CoffeeScript and Less; I personally am not thrilled with the prospect of having to install NodeJS.

But now there is hot plug NodeJS.

I certainly get what the developer was going for but the reality is that in a production environment we, devops, are supposed to plan for this sort of thing. Our systems are supposed to have downtime.  We are supposed to reboot our systems every once in a while to make sure that we can. Every data center I have ever worked with or for has had a power outage at some point. Even the mighty Amazon AWS/EC2 has had major failures and outages.

So while a hotplugged NodeJS might be interesting or novel; on some levels it’s not a real feature to bet your enterprise on.

 
Leave a comment

Posted by on 2012/09/25 in ProgLang, Tools

 

Tags:

Convert your Mac from a Rabbit to a Tortoise

I went to the Genius Bar on Sunday because I cracked the glass on my iPhone and the mouse on my wife’s MacBook was not working (swelling battery maybe) and then there was the performance on my MacBook Air that was just sucking!

The results are in. Google drive uses craploads of memory and CPU; Little Snitch (3 beta) is not much different. As a result the system is just so super sluggish. I understand the issue with little snitch. Heck it’s beta software.  But my concerns for Google Drive’s performance are all over the place. They do not have an auto updater and they do not display the current version number in the preferences pane. They do not support a ‘start paused’ option either.

I have a number of there product concerns with GD but I’m confident that they will never be heard. I like the storage capacity and there are other tools for accessing and syncing (cyberduck) so I think I’ll go that way instead.

PS: Make sure that the firewall is turned on. The latest version of OSX disables it. I’m not certain whether that has been the default but it is now.

 
Leave a comment

Posted by on 2012/09/25 in Tools

 

Tags: ,

MDD and DSL – I feel like I’m circling the drain

Have you ever seen one of those charity boxes that looks like a large funnel and when you put your coins in motion it goes round and round until it falls into the center hole only to be collected by the charity’s processor. Looks something like this. Well when I think about MDD (model driven development) and DSL (domain specific language) I feel like the coin going round and round.

MDD and DSL were and still are viable tools for deconstructing systems and processes that are to be implemented in hardware/software but to fail to recognize the history is pure folly. Many years ago they were referred to as DFD(Data Flow Diagram) and FFD(Funtion Flow Diagram). Sure, back in the day, we used analog systems to capture the details and now it’s digital but the results were exactly the same.  In fact even if you say that MDD is the new and improved DFD…. it’s new and improved in terms of same box of PopTarts with just a little less filling.

And so now I wrestle with OO.next(). Object Oriented programming was and continues to be leap years ahead of DFD/FFD and the jury would seem to be out on any comparisons to MDD/DSL. So instead let’s jump ahead another generation. What is the next version or incarnation of OO going to look like and is it ready for some early adoption now?

 
Leave a comment

Posted by on 2012/09/14 in architecture, future, Tools

 

Tags: , , ,

The web of trust is an evil illusion

I did not like how this article was taking shape so I’m starting over. I have a very serious two-part question for everyone.

(Q) Do you install adhoc(non commercial) binary files on your computer?
(Q) Do you install adhoc(non commercial) binary files on your computer with administrator privileges?

In the OpenSource world (no the world that Richard Stallman visits) not all source code is treated the same. For example there are some projects that are source code only (no make files), there are others with source and make files but no docs, and there are others that are so complicated or big to install that you have to install the binary (X11 is a great example); and others still have DEEP dependencies that are not automated.

It’s also important to note that not all operating systems are treated the same. OSX provides Xcode virtually free of charge. The *nix systems have free and commercial toolsets. Visual Studio for Windows, on the other hand, is not free (there is an express version that might be free)

It is probably fair to say that Microsoft’s sandbox is more of a petri dish for binary only malware. However, it is the users responsibility to steer clear. It’s also on the tool vendors to make sure that tools are installed in userspace alone. Using duplicates or diskspace as a reason for installing as admin or root no longer exists.

As the saying goes… “Fortune Cookie: Man who put gum in jockstrap wake up with sticky dicky”.

 
Leave a comment

Posted by on 2012/08/08 in security, Tools

 

The next programming language you learn should be GO

I have been asked several times this past week about technologies I would choose to build my next application. There was a time when I adopted Java and the most of the world was still looking at Microsoft’s Visual Studio line of languages.

There was a time when people used to say “no one ever got fired for buying IBM” and more recently this rule was applied to Microsoft.

Java has now displaced COBOL in a lot of mainframe and other big iron installations. While it is stable in many environments it is still encumbered by licensing, deep dependencies, lack of a quality rating system, and is still not available on every platform.

Eventually GO may end up in the same place, however, the current state of the art tools for building and packaging GO application appear to be giving it a leg up. Also since the level of coding is somewhere between C and C++/Java one needs to take an algorithmic approach to software development. With any luck this means more performant code and scaling systems.

Google has deprecated several projects this year and terminated others. This is not always a good thing but clearly they are looking at their ROI as they should. It would be nice if Google would let us know what their commitment for LTS was going to be.

Unlike Java which was closed source for many years after it’s 1.0 release, GO has been open source since it’s beta days. I personally think they are lacking an IDE and a AppEngine toolkit similar to the python version. But for the moment it’s my goto after python.

 
Leave a comment

Posted by on 2012/07/21 in architecture, Tools

 

Tags: ,

How do you want to be perceived by employers?

I put together this poll because I’m curious as to the best way to present myself and what is going to generate the best possible response for the best possible jobs and opportunities.

In the poll below I provide two links. One of them is to my link at about.me and the second is to my blog. (in no particular order)

 
Leave a comment

Posted by on 2012/07/21 in site, Tools, updates

 

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