Wednesday, December 22, 2010

A way to download an Aspose Word document to a browser using MVC2

Perhaps there's a better way, but here is what I did quickly to get an Aspose Word document down to a browser. In the controller class use a MemoryStream to feed a FileStreamResult.
//Controller
public ActionResult MergeAndDownload(Choice choice) {
 MemoryStream memoryStream = new MemoryStream();
 Document document = ... // get your Aspose document
 document.Save(memoryStream, SaveFormat.Docx);
 memoryStream.Position = 0;
 var fileStreamResult = new FileStreamResult(memoryStream, "application/ms-word");
 fileStreamResult.FileDownloadName = "MySuggestedFilename.docx";
 return fileStreamResult;
}
In the View just do a Model.Save()
//View
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<Aspose.Words.Document>" %>
<asp:Content ID="Content1" runat=server ContentPlaceHolderID="MainContent">
<%@ Import Namespace="Aspose.Words" %>
<% 
    Response.setContentType("application/msword"); 
    Model.Save(Response.OutputStream, SaveFormat.WordML); %>
</asp:Content>
If you know a simpler way, please post in comments.

Saturday, December 04, 2010

Google Docs Revisited

I watched the Google Docs videos this morning. The Visio replacement, "Drawings", looks very useful, and I didn't know they had a PowerPoint replacement, "Presentations". If I were a company that made 32% of its income from office software, I'd be nervous.
I didn't even know about their online survey tool:

Monday, November 22, 2010

Can't wait for 3D programming environments


Ok, I'm a big fan of 3D movies and waiting patiently, (OK, not so patiently for TimeWarner to rollout its Discovery3D channel), for mainstream 3D TV.
I've seen a few computer 3D monitors advertised and pondering what that will mean for programming environments.
I have a pair of prescription glasses with a prism effect for easing eye-strain. Oddly enough the glasses present a 3D effect based on color. Key words colored red float about an eighth of an inch off the screen, key words in blue sink into the monitor.
It will be great when we all have 3D monitors for coding and can tell VS2014 to make the inner loops of program float a little off the monitor. Not as great as when color coding made its appearance, but it'll be welcome just the same.

Friday, November 19, 2010

The Future of Arial Dogfights?

This could well be the future of dogfights (not with virtual missiles, but real ones). It could also be the future of attacks on individuals, like the Predator strikes in Pakistan and Afghanistan - or terrorist attacks.

Thursday, November 18, 2010

Waze, a crowd-sourced traffic advisor


I've been playing with Waze, an iphone app, for a few days. I love the promise of Waze - it gets traffic conditions in real time from other Waze users. Waze could see that several of its users are traveling at 3 mph up I35 and can redirect you automatically to another route. No need to have a human traffic seer to punch in recommendations.
Waze can learn how fast different routes get you to work on different days and times; then advise you on the fastest way to work - taking into account how fast all the other Waze users are traveling.
Alas it shows much potential, but its still in growing pains. Several times it directed me in the wrong direction and had trouble locating the destination I typed in.
I'd love to see the product when it matures - it shows so much promise to reduce fuel consumption and make our travel times shorter.

IPhone with a 3D Camera

This is what I'd like for Christmas, a 3D IPhone. Softbank is launching a 3D phone that can show 3D pictures and video without the special glasses. Surely an IPhone that could take and show 3D pictures and play 3D games is not too much to ask for? The width of the IPhone is perfect for a second camera to mimic the distance between the Homo Sapiens' eyeballs.

Thursday, November 04, 2010

Agile Austin Meeting Nov 2, 2010

http://www.fincher.org/images/2010-11-02-1921-IMG_0911__Small_.jpg
http://www.fincher.org/images/2010-11-02-1848-IMG_0905__Small_.jpg
At this month's Agile Austin meeting 60 people came to hear Jeffrey "Party with" Palermo and Matt Hinze both from talk about "Iteration Zero", setting up a project's source control, build environments and deployment. Below is my jumble of takeaway items:

They recommended the book "Configuration Management" by Aiello
When the audience was asked which version control they used the raised hands indicated percentages like this: Svn 30 git 30 hg 20 Visual Source Safe 5 other 15
Don't centralize libraries for all your projects; each project should have its own hibernate libraries so they can upgrade individually.
You can get hosted version control for about $10 per month
Headspring uses bitbucket by Atlassian for source control, Psake for building, TeamCity by Jetbrains for Continuous Automation (other popular ones are Hudson or CruiseControl.Net), Watin for GUI testing, Rackspace cloud for servers
Matt: "We are digging a pit of success and pushing you into it."
Developers should have their test database on their own box so development can continue without a network
The USPS hosts some sort of Address validation
In batch files include an "& pause" so the windows stay open for inspection

I was surprised how much Headspring uses the cloud for their servers. Jeffrey said they like the pay-by-the-hour usage model of spinning up a server, doing their work on it, and then closing it.
Headspring is an interesting company in that they do training, but they also develop software commercially for profit. I like the fact that their advice is not some academic thinking of a subject, but hard-won knowledge based on what really works in the trenches.

http://www.fincher.org/images/2010-11-02-1901-IMG_0908__Small_.jpg
http://www.fincher.org/images/2010-11-02-1900-IMG_0907__Small_.jpg
Scott Bellware was present to add the Lean perspective to the evening.
pic

Saturday, October 16, 2010

A Signpost to the Future - Genetically Engineered Silkworms Spin Like Spiders


Spiders have very strong silk, but it's difficult to obtain commercially. We can gather silk easily from silkworms, but its not as strong as spider silk.
Very interesting article at discovery.com about injecting dna from a spider into silkworms to create stronger silk more easily.
This is a signpost to the future. More and more of our products will be made this way. Chemical factories could be replaced with vats of bacteria churning out desired chemicals much easier, safer, and more environmentally friendly.
Do you think this is a good thing?

Wednesday, October 13, 2010

Austin .Net User's Group, October 11, 2010


Brandon Satrom presented "Testing the right thing: Behavior-Driven Development in ASP.NET using Gherkin, SpecFlow and WatiN" to a crowd of 70 developers. Brandon started by saying this was his journey of testing for his projects and not necessarily the way to test all projects. (I do appreciate his humility and think he will be a good Microsoft Developer Evangelist).

After his presentation, Brandon graciously allowed Scott Bellware to present a counter point - basically that the "customer readable" scripts were too detailed and customers would not read them anyway and that the overly-detailed scripts just get in the way of the total process. The discussion between Scott, Brandon and the audience was refreshing.
(BTW, TeKSystems opened the session saying that $60/hr was a good contracting rate, business is heating up in Austin, and Silverlight is getting some traction.)

Monday, October 11, 2010

F# has Units of Measure

One of the great things about F# it that it allows you to annotate values with Units of Measure. (Remember the Mars Climate Orbiter burning up because all subcontractors used metric except Lockheed Martin?) F# will do limited testing to make sure your units are consistent. Units of Measure doesn't really understand the concepts of length, volume, force, or currency, but used wisely can be a great help. A little example:

[<Measure>]
type cm
[<Measure>]
type inch
val cmPerInch : float<cm/inch> = 2.54

> let length1 = 1.0<cm>
let length2 = 1.0<inch>;;

val length1 : float<cm> = 1.0
val length2 : float<inch> = 1.0

> let length3 = length1 + length2;;

  let length3 = length1 + length2;;
  ------------------------^^^^^^^

stdin(41,25): error FS0001: The unit of measure 'inch' does not match the unit of measure 'cm'
> let length3 = length1 + length2 * cmPerInch;;

val length3 : float<cm> = 3.54

Wonderful "Paper" Cartoon of Star Wars

I don't often post videos, but this one is just too well made and clever not to share. The video is made with just paper cutouts, something anyone could do. Enjoy.

Wednesday, September 29, 2010

Austin Java User's Group September 28th - Cassandra, MapReduce, and Roo


Forty people heard Jeremy Hanna present integrating Cassandra and MapReduce. My jumble of notes:
Cassandra, a horizontally scalable key-value database, was born at facebook.
It has no "master" node, just a bunch of peer databases.
Very fast for writting, fast for random reads, not good with ad hoc queries.
"Pig" is a scripting language used at yahoo that compiles down to MapReduce.
"Hive" used at Facebook is similar to "Pig", but more SQL like.

Ryan Stewart demoed Spring Roo, a scaffolding system that builds common code blocks like screens for create, edit, delete and data access functions for java; much like scaffolding pioneered by Ruby on Rails. I was very impressed by the intelligence built into Roo. My notes:
Roo accomplishes its magic by creating AspectJ files that are blended into the java objects. (C# has a more straight forward method with partial classes).
Roo is a process that runs in the background that can update its AspectJ files when it detects a change to a java object file.
Roo has a great help and guidence system.
Eclipse can be used to access Roo commands.

A few years ago our Java Users Group had demos of amazing code building tools shown by companies that charged thousands of dollars per seat for their software, now the amazing software is mostly free open source projects.

Friday, September 03, 2010

Playing with AutoHotKey

After reading so much about AutoHotKey I decided to take the plunge and tackle one of my annoying manual tasks - toggling the text and background colors in Firefox from normal to my most coveted, easy on the eyes, "white-on-black" theme.
screen shot
With AutoHotKeys handy recorder I saved this script to c:\home\mfincher\bin\toggleff.ahk:
Send, {ALTDOWN}{ALTUP}to
WinWait, Options, 
IfWinNotActive, Options, , WinActivate, Options, 
WinWaitActive, Options, 
Send, {TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{TAB}{ENTER}
WinWait, Colors, 
IfWinNotActive, Colors, , WinActivate, Colors, 
WinWaitActive, Colors, 
Send, {TAB}{TAB}{SPACE}{TAB}{TAB}{TAB}{TAB}{SPACE}{TAB}{ENTER}
WinWait, Options, 
IfWinNotActive, Options, , WinActivate, Options, 
WinWaitActive, Options, 
Send, {TAB}{TAB}{ENTER}
Then in "My Documents\AutoHotkey.ahk" startup script created a mapping for "Windows-f" to run my script:
#f::Run c:\home\mfincher\bin\toggleff.ahk
Now if Firefox is the active window, and the Options panel has "Content" preselected I can just enter "Windows-f" and my colors are toggled.
Next, how to auto select Firefox and set the Options tab to be "Content".
Cheers.

Java User's Group August 31, 2010

pic
My jumbled take-aways from the JUG meeting:
The meeting started with Jeff Hennigan from Kforce answering questions about the local job market.
Employers are looking for Spring, Struts and Hibernate framework experience.
Knowing syntax is still important for interviews
Technical tests are common
Experience is better than certifications
Good degrees like physics and EE from top 25 schools still matter
More database experience the better.
Cloud computing is taking off
Few android or iPhone jobs being requested
Enterprise skills in high demand
Upper 80Ks to 90Ks good salary for senior java developers

When asked who was looking for a job only 4 people out of 45 raised their hands.

Peter Donton, who has won the free pass to NFJS two years in a row, talked about his thoughts on two talks from the NFJS conference.
The first was Smart Java - systems using rules or Bayesian logic. Peter demoed a java library for using Bayesian logic, Classifier4j.

Neal Ford said programming java is like smithing in the 21st century. Once blacksmithing was a secure job, but with the rise of the industrial revolution, demand declined. In the same way we need to upgrade our skills for the next revolution. Can you say functional programming? Groovy?

Peter's second topic was Nosql databases.
He said you can pick any two: Consistency, availability, and partition tolerance
Instead of ACID, nosqler's are fond of the acronym BASE - Basically Available, Soft-state, Eventually consistent

Chris Aniszczyk talked about the latest in Eclipse technology. The items that struck me:
Dependency injection is big
Git really is better than svn
Eclipse is trying to get into the web development business

Tuesday, August 31, 2010

Resharper's Code Style Sharing

One of the problems working with a team of programmers is personal taste in variable naming and general code style. Now Resharper comes to our rescue with the "Code Style Sharing" feature. Now all the developers on a project can share the same style if you export your preferred settings to a file called "<SolutionName>.resharper.xml", check it into version control under the same directory as your solution, and everyone selects to use the "Shared across the team, per solution". Enjoy.
screen shot

Small Remote-Controlled Helicopter Can Pickup Objects



Surprisingly the first bank robbery in the United States did not occur until 13 February 1866 at Clay County Savings Association in Liberty, Missouri.
With remote vehicles like this how long until someone commandeers one from a hospital, puts a bomb on it, flies it to a bank and demands money?

Friday, August 13, 2010

David Smith at Austin SPIN and IEEE Meeting

The always entertaining and thought provoking David Smith talked to a crowd last night of the Austin SPIN and IEEE.



Some random thoughts I jotted down:
The world in increasing real time
Continuous integration is moving to continuous delivery of software
No system is 100% secure, you just make your tradeoffs
David recommended the book, "Does IT matter?"
His mantra through the night was "Digital content + ubiquitous communication + ubiqutious computing" is changing the world - are you ready?
Network communication used to be "People to people", then "People to things", now most traffic on networks is "Things to things".
The future is in biological computing.
"My geek is more powerful than a nuclear bomb" Cyber-warfare is incredibly powerful.
"Go" is the fastest growing language in Tiobe's history of tracking.
David said we passed "Sarnoff's law" on the way to "Metcalfe's law" and are now in the territory of "Reed's law" which says the power of the network of N nodes is equal to 2 raised to the N power.

TiVo Blue Screen of Death


My TiVo crashed the other night and left me this instead of a Blue Screen of Death (BSD). I was watching a talking head show when TiVo froze and then randomly started changing colors on the screen.

Saturday, August 07, 2010

Works great in Opera, Firefox, Safari, and Chrome - looks awful in IE

Realizing that an HTML tag was really just a placeholder for some css code was a 'Eureka' moment for me years ago. So while doing some maintenance on my web site today I wanted to style all the elements semantically with css code backing them, not with "<p class='quote'> ... </p>", but with "<quote> ... </quote>". This would be like a Domain Specific Language written in css,
quote {
  display: block;
  margin: 2em 0.5em 0 0.5em; 
  padding: 0.5em;
  text-align: left;
  background: #bbbbff; 
  border:1px solid black;
}
author {
  display: block;
  margin: 0 0.5em; 
  padding: 0.1em 1em 0.1em 0;
  text-align: right;
  border:1px solid black;
}

so, in the HTML it looks like this,
<quote>
Everyone thinks of changing the world, 
but no one thinks of changing himself.
</quote>
<author>
 Leo Tolstoy
</author>
Sadly, this works in all my major browsers, and the iPhone, but alas, not in IE.

Good "one sentence stories" from http://www.onesentence.org/

One of the great things about the web is aggregating and voting on user-generated content like these.
Good "one sentence stories" from http://www.onesentence.org/ :
Bree
After seventeen years of feeling like a disappointment to my mum, and writing a story about how she screwed my life, nothing feels as good as deleting the story after over hearing her exclaim to strangers about how proud she is of me.

Daughter
She cried as her daughter and her best friends shaved their heads too, so she wouldn't have to be bald alone.

Dear Sis
I watched her vomit blood for an hour and assured her she was fine because I was too high to drive her to the hospital.

Hollie
At 22 my father carried me to my old bed, and cried as he tucked me in minding not to touch the bruises that were a road map of pain and abuse I had hidden from him for almost two years.

Randy
Waking in the street after the motorcycle accident, I knew it was bad when I saw one of the paramedics throwing up.

Wednesday, July 28, 2010

SQL to find non-consecutive numbers in a column

We had a need to find non-consecutive numbers in a sequence of numbers. This snippet of SQL finds userIDs which are non-consecutive.
SELECT A.userID + 1
FROM MyTable AS A
WHERE NOT EXISTS (
    SELECT B.userID FROM MyTable AS B 
    WHERE A.userID + 1 = B.userID)
GROUP BY A.userID;

Monday, July 26, 2010

Who's to blame for the recent economic meltdown?

A good summary from an interview with Nouriel Roubini at Amazon

The Fed kept interest rates too low for too long in the earlier part the past decade and fed — pun intended — the housing and credit bubble. Bankers and investors on Wall Street and in financial institutions were greedy, arrogant and reckless in their risk taking and build-up of leverage because they were compensated based on short term profits. As a result, they generated toxic loans – subprime mortgages and other mortgages and loans – that borrowers could not afford and then packaged these mortgages and loans into toxic securities – the entire alphabet soup of structured finance products, so-called “SIVs” like MBSs – Mortgage-Backed Securities, or CDOs – Collateralized Debt Obligations -- and even CDOs of CDOs. These were new, complex, exotic, non-transparent, non-traded, marked-to-model rather than market-to-market and mis-rated by the rating agencies. Indeed, the rating agencies were also culprits as they had massive conflicts of interest: they made most of their profits from mis-rating these new instruments and being paid handsomely by the issuers. Also, the regulators and supervisors were asleep at the wheel as the ideology in Washington for the last decade was one of laissez faire “Wild West” capitalism with little prudential regulation and supervision of banks and other financial institutions.

Wednesday, July 21, 2010

Default length of Delicious RSS feeds is 15

I use GoogleReader to keep track of interesting news stories, but I also use Firefox's live bookmarks combined with tagging at delicious.com.
As I find a site I'd like to add to my daily news reading I tag it with "news" and "daily". Long ago, I created a live bookmark in Firefox named "news+daily" to "http://del.icio.us/rss/fincher42/news+daily". I also have one for "energy+daily" and "blogs+daily".
In the morning I select in Firefox "Bookmarks/news+daily/Open All in Tabs" and it churns away and opens all my daily news sites in their own tidy little tab.
The problem I noticed lately is that the maximum number of tabs showing up was 15. After a little investigation I had to change my Firefox live bookmark source to append "?count=100" and now everything is rosy and "news+daily" has up to 100 bookmarks.

Friday, July 16, 2010

Emacs lisp code to backup current buffer

I've upgraded to the latest emacs and doing a little cleanup work. Just wrote this tiny elisp method to backup a file and embed the current date in the new file name. I use this right before I start making major changes in a file not under version control to have a temp file to go back to when things go awry - and they always go awry.

(defun backup-current-file ()
"backs up a file with date embedded. e.g., '.emacs' is copied to '.emacs-2010-07-16'"
(interactive)
(let ((backupfilename (concat (buffer-file-name) "-" (format-time-string "%C%y-%m-%d" (current-time)))))
(message (concat "copying file " (buffer-file-name) " to " backupfilename) )
(copy-file (buffer-file-name) backupfilename)
))

Wednesday, July 14, 2010

Using Emacs Tramp with Dreamhost

I finally got Emacs 23.2.1 to work using Tramp, a remote editing utility, with my hosting provider, Dreamhost. The secret was to use plink, which connects to PuTTY, as the transport. I had been using Ange-Ftp, but it transmits passwords in the clear, which is not safe in today's world. Now I can edit files on my hosting site in the comfort of Emacs, knowing my password is encrypted. In my .emacs file:
(if (string= emacs-version "23.2.1")
(progn
(require 'tramp)
(setq tramp-default-method "plink")
(setq tramp-verbose 10)
(setq tramp-debug-buffer t)
)
)

The Petroleum-Electric Myth is Alive and Well


The International Business Times had an article today referenced in slashdot which starts:
"As the U.S. moves to reduce dependence on oil, the nuclear industry is looking to expand, with new designs making their way through the regulatory process."
The introductory paragraph is just wrong because it implies if we just had enough electricity we wouldn't need as much oil, but we don't use petroleum to generate electricity. If Prometheus came down to earth and created enough new nuclear power plants overnight to supply 100% of the electricity in the US, do you know how much this would cut our oil dependency? Zero, zilch, zip. We need the oil to run our cars. Having all the electricity in the world won't power our cars - yet. The real path to energy independence is electric cars that we can power with nuclear, coal, hydro, wind, or solar. Then we can use our domestic oil for industry.

source

Saturday, July 03, 2010

A Fun Retro HTML5 Game


HTML5 holds plenty of promise - drawing directly on a canvas via JavaScript with GPU acceleration. A glimpse is an asteroid game here.

Monday, June 14, 2010

.Net User Group Meeting June 14, 2010




The topic was ".Net Build Tools", but the theme was "Diversity".

John Teague talked about using Nant. He said it's a really mature product and it's so successful support is on simmer since most things have already been done. XML is the downside. He showed how to use the tag "Xmlpoke" to inject into config files and Mkiisdir to create virtual directories.
John demo visual studio on a Macintosh which caused quite a buzz; he is using VMWare's Unity setting to have VS act like another Mac window. About half of the laptops at the meeting were Macs.

Derick Bailey talked about using Rake for building and deploying. Since XML is a declarative language, we have to shoehorn in programming. He has an article about Albacore, a series of Rake tasks for building .Net projects here.


Jorge Matos talked about the Psake project, a PowerShell dsl to help build .Net projects. It is based in Github. A few notes:
PowerShell has remoting so you can easily execute commands on other machines
Psake just a script.
Exec shows errors.
Jorge showed a suite of tests functioning just like NUnit
You have to modify the Executionppolicy to get Psake to run. Enable-PSremoting on remote servers

Eric Hexter presented Pstrami, a PowerShell module for deploying projects.

For future meeting topics everyone was encouraged to go http://adnug.uservoice.com and vote for their favorite topics.

Some projects were hosted by Google, some by GitHub, some laptops were Windows and others Macs, build systems were presented based on Ruby, PowerShell, and C#.

Fears of a Microsoft monoculture are overblown. Diversity is the word.

Monday, June 07, 2010

Sumatra PDF Reader is Fast, Free Alternative to Adobe



I just upgraded to Sumatra 1.1, a free PDF reader. Sumatra is very fast compared to the glacial Adobe PDF reader. I've only had one PDF file that Sumatra did not handle correctly. Sumatra is definitely worth using on a windows machine.

Friday, June 04, 2010

RSA Animate - A Great Way to Reinforce Speaking

Jeremy Miller had a link to the following video. I loved the way the cartoon artist reinforces the speaker via quick drawings.
(I'm not sure if what the speaker is saying is true, but it's a marvelous medium.)

Thursday, June 03, 2010

Agile Austin Celebrates 501C6 Non-profit Tax Status


This last Tuesday's Agile Austin meeting was kicked off by Matt Roberts talking about Agile and Leadership. Matt's extensive experience in the industry gave extra weight to his talk.
He started off by talking about Self Leadership and knowing how to motivate yourself before motivating others. Sprinkled throughout the talk were good boating analogies.


Matt recommended these three books:

book book book




Random bits which caught my attention:
Seek first to understand then to be understood
Leadership for dummies
Stop doing stupid stuff like annual reviews and collecting crazy metrics
Pragmatic agilist
Do fun crazy stuff like Karoke on bus
To take pride in their work people need control
Talk to Teddy bear
Leaders must get rid of "Virus", people who preventing work getting done.
Responding to change is good, but too much can be crazy
Every team needs a dragon to slay otherwise it will slay itself
Listers law: People under time pressure don't think faster
Leaders must clearly articulation the short-term pain of new processes
Leaders must followup,followup,followup on projects
Change is hard. Some people will not like it. Be prepared.


Alan Bickerstaff talked about mistakes startups often make. He had practical solutions like founders should get vesting common shares and use the corporation not a llc.

At the end of the meeting we had a party replete with sparkling wine and cheeses.






Monday, May 10, 2010

.Net Uses Group Meeting May 10, 2010 - Optimizing SQL




Wes Brown talked to 55 attendees about how to optimize SQL queries. My random notes:
Your DBA should be updating the STATS at least once a day for databases with changes.
Before running trial queries use "Set statistics io on" and Set statistics time on"
A Clustered index is a must for any table, whether it really needs it or not.
Optimize Logical Reads first, before looking at cpu.

The usual .Net crowd was noticeable by their absence; perhaps a sign that NHibernate is doing all the optimization people think they need.

Tuesday, April 27, 2010

Java User's Group: Flex and ForkJoin


Three companies said they were hiring java developers and only 6 people were actively looking for work. This is quite a change from a year ago when dozens of people were looking.
David Sheth talked to the 80 attendees about the new Fork-Join coming in Java7 and when to use threads, the executor, or Fork-Join. He gave a great overview of the problems in optimizing parallel operations in multi-core cpus.
James Ward flew down from Denver to talk about Adobe's Flex. He recommended visiting www.flex.org/tour to see samples of flex programming. Flex has a free IDE available for download along with unit test and mocking library.
Adobe AIR is a superset of the flex api designed to run outside the sandbox as a native application so it can do things like access the harddrive. AIR can run on Android, but oddly enough not on the iphone or ipad.
James talked about a data transfer protocol, Amf, which was 10 times faster than transferring raw xml; works like gzip to compress xml. A version of Amf is on the .Net platform.

Tuesday, April 20, 2010

Encyclopaedia Britannica Online Becoming More Wikipediaesque

Encyclopaedia Britannica Online is starting to beta test new functionalities to become more democratic. Now, if you are a member of EB Online, you can submit comments or suggest edits to articles.
A very positive step. Wikipedia is useful, but you can never fully trust it. Encyclopaedia Britannica Online at least you can reference in school work and not be ridiculed.

Thursday, April 15, 2010

Software has the shelf life of bananas


Click to read reviews or buy Domain Driven Design


I just finished Eric Evan's Domain Driven Design book (see my notes here).

I'm struck by his Epilogues section about how most of the great software he and his colleagues sweated over is quickly brushed aside in a few years as business needs change. All that work lost, like tears in the rain.

That's the thing about software. It's so easily discarded. Most of the software I've written in my career has been used for a few years and then thrown out, or never even put into production. As software professionals we don't have the satisfaction of our friends in Civil Engineering or literature as Robinson Jeffers so eloquently says:


To the Stonecutters


Stone cutters fighting time with marble,
    you foredefeated challengers of oblivion
Eat cynical earnings, knowing rock splits, records fall down
The square-limbed Roman letters
Scale in the thaws, wear in the rain.
The poet as well
Builds his monument mockingly,
For man will be blotted out, the blithe earth die, the brave sun
Die blind and blacken to the heart:
Yet stones have stood for a thousand years,
    and pained thoughts found
The honey of peace in old poems.

-Robinson Jeffers, 1887-1962

Tuesday, April 06, 2010

Great PodCast on the American Auto Industry

This American Life has a great podcast on NUMMI; searching for what is wrong with the American Auto Industry.

Two useful utilities: Console and SpaceSniffer


I download two interesting Windows tools today.
Space Sniffer tells you where your disk space is being used. It's entertaining as it scans your disk.

Console is a replacement for the 70s style Windows Cmd.exe windows. Console has tabs and real text selection.

Thursday, April 01, 2010

Java User's Group: REST tools in Java


Srini Penchikala presented "REST Web Services Support in Java EE 6 and Spring 3.0" to about sixty java enthusiasts last Tuesday.
The meeting was sponsored by TEK who provided the pizza. The TEK spokesman said Agile skills would probably become a de facto requirement for most jobs within a year.
Srini talked about the different syntax for supporting REST within EE6 and Spring, with examples of doing things in both frameworks.
A small discussion centered around the movement of configuration data from code, then into XML, and now a trend back into code with the use of annotations. John Heinz made the point that annotations, although in code, are really declarative programming.
Srini mentioned that with Spring3 annotation in the code can be overridden by XML configuration, which seems to be the best of both worlds. He also used RestClient from Wiztool.org to test his demo code.

Monday, March 29, 2010

Taking the Pulse of Shopper's Identity

A great story about the future of shopping and identity management using finger vein patterns instead of credit cards is at NewLauncher.com.
We need to use credit cards less since they are so easily stolen or forgotten at home. I like the finger vein method or iris pictures to confirm identity, although neither is perfect, it takes criminals a lot more work than swiping a credit card blank through a magnetic writer.

A related story on using finger vein identity in a coke machine is here

VeinID - Finger Pulse Vending Machine from CScout on Vimeo.

Thursday, March 18, 2010

Agile ATX Lunch Crowd at Central Market


I had a great time at the Agile ATX lunch today at Central Market on 38th and Lamar. The group meets every other Thursday at 11:30.
Some of today's topics were Mercurial vs. Git vs. Subversion, Domain Driven Design, SSIS and RhinoETL, and raising babies.
As usual I didn't understand many of the conversations, but its good to be humbled sometimes.
Come join us if you enjoy talking about the latest trends in software development especially in the Agile arena.

Saturday, March 13, 2010

Can You Name the Most Popular Programming Languages?

Fun Quiz to test your knowledge of the most popular programming language (well, fun if you are a languages geek).

Wednesday, March 03, 2010

Java User's Group on March 2, 2010


Norman Richards, long time java guru, gave a presentation to about 40 people on JSR 299: "Contexts and Dependency Injection for the JavaTM EE platform". It was very interesting to hear about the merging of Spring, Seam, and other technologies being baked into the latest version of Java.

Friday, February 05, 2010

EventBrite Integrates Amzaingly Well With Twitter, Facebook, and Calendaring

In Matt Hinze's tweets this morning was a link to Austin Code Camp registration at EventBrite. While registering I noticed a myriad options for publicizing the event - you can click on convenient links to post on Facebook, your Yahoo or Google calendars - or even Twitter which is how I got to EventBrite in the first place. It's an amazing self-reinforcing process.

Tuesday, January 19, 2010

Wiping Disks Clean with Free Software from dban.org

Recently I needed to wipe the hard drives of a few machines. I was very pleased with Darik's Boot and Nuke ("DBAN"), a free program from dban.org. Before you donate your old computer, or even put it out at the curb for trash pickup, be sure to wipe the drive clean; even erased Quicken data can be read from your old hard drives.

Wednesday, January 06, 2010

Agile Austin - Peer Code Review – An Agile Process

2010-01-05-AgileAustin-Gregg Sporar.jpgAt last night's Agile Austin meeting, Gregg Sporar gave an excellent talk on Peer Code Reviews to seventy attendees. Here are a few of my cryptic notes:

  1. Professional writers have editors, why shouldn't coders? In fact, in the US we are blessed with twice as many professional editors as writers.
  2. We need to move the feedback closer to origin when writing code. The earlier the code is peer reviewed the better. Should code be reviewed before being checked-in?
  3. One of our Agile principles is Collective Code Ownership. Peer reviews aids this process by helping everyone understand the code.
  4. If coders know their code will be reviewed they code better.
  5. Peer reviews help everyone learn new techniques for programming.
  6. Michael Fagan, the founding father of code reviews encouraged lots of meetings. Is roi there for lots of meetings? Only 4% of bugs are found in meetings.
  7. Types of Code Reviews:

    1. Over the shoulder code review. Just grab a friend and have them look over your shoulder at your code.
    2. email
    3. pair programming
    4. Automated tools

  8. How long to review code. Studies show most bugs found in 60-90 minutes. On average 1 bug per 10 min.
  9. How many lines of code to review? 200 loc per hour seems to be the sweet spot.
  10. Regarding checklists: Don't put too many items in a checklist. 5-9. Error handling would be a good item for a checklist.
  11. One way to review code is to only review unit tests to make sure they are thorough, and then the code should be fine.
  12. A few suggestions for not letting the reviews get to heated: Remember it's the tone that counts. Also "Ask don't tell", (e.g., Why did you use this API?)
  13. Smartbear offers a free book at Codereviewbook.com
  14. Gregg blogs at Blog.smartbear.com.