If you happen to be on my seldom visited blog it has now moved to: http://blogs.windward.net/matta/ , nothing new there yet but I will blog some more soon.
If you happen to be on my seldom visited blog it has now moved to: http://blogs.windward.net/matta/ , nothing new there yet but I will blog some more soon.
Posted at 11:45 AM | Permalink | Comments (0)
Reblog
(0)
| | Digg This
| Save to del.icio.us
|
|
So your marketing department has just made a new website. They ask you to make some new forms for the webpage, but for some reason they handed you a bunch of php pages. Your old form code was all in asp.net! You have things to do besides this, they are pushing out the site live tomorrow, and you don't really know why the pages need php but you need to get this done.
So after looking at a few pages on mixing php and asp.net together I said to hell with it and figured the quickest way was to just shove the old aspx pages into iFrames in the php pages.
Trim down your aspx page to fit in whatever sized container you need and it works.
Then marketing tells you they need the entire parent page to redirect after the submit form button is clicked, not just the iFrame. You can't do this in asp.net so you need to use javascript. Simple way to call this after the form submit code has done whatever it needs to do is write a response back in your page behind code:
Turns out the website wasn't live almost a week later, I think they lied to be me to make me work faster.
Posted at 02:35 PM | Permalink | Comments (0)
Reblog
(0)
| | Digg This
| Save to del.icio.us
|
|
Recently at a developer lunch someone brought up the recent article about virtual monkeys. A programmer set up a simulation with millions of virtual monkeys that randomly typed in text, and after a while they eventually produced a work of Shakespeare. Now computing power is expensive so we thought how about we just get some real monkeys to type it up.
Shown: preferred typing monkey
Unfortunately the preferred type of monkey is endangered and it would be rather expensive to get a million of them too. But we thought why not a slightly cheaper animal, surely a dog can type just as well as a monkey.
Shown Arthistory Sapiens
After thorough research we found ourselves with the cheapest solution, the art history major. Not just cheap but free. We estimated in Boulder, Colorado there was approximately 10 million art history majors.
Now what does this all have to do with unit testing? Well recently we have had a lack of interns for doing testing for us and needed a solution. But at the lunch meeting we suddenly realized what if our mentioned army of Arthistory Sapiens wrote unit tests instead of Shakespeare.
A couple of calls later and we had 20,000 Arthistory Sapiens willing to work for free as long as we gave them a recommendation. This would be our first initial test run. We purchased a small plot of land in north Boulder and an old Cray mainframe with 20,000 terminals.
We decided to use Perl as our language, as we thought Perl had the most likely combinations of valid unit tests possible. This would prove to be the best decision.
After only 2 hours one of the Arthistory Sapiens produced this code. This one piece of code gave 50% code coverage for our entire product.
This first test run was a huge success. Our only costs were a grand for the land, a six pack for the Cray and the terminals, and a homeless Perl expert we paid in food to verify the unit tests. We now have 500 acres of land in North boulder and over a million Arthistory Sapiens typing at any one time. We consistently have great code coverage and quite possibly the fewest bugs in production code ever. This is the future of testing.
Posted at 01:59 PM | Permalink | Comments (0)
Reblog
(0)
| | Digg This
| Save to del.icio.us
|
|
One predicament I often find myself in is having 20+ tabs open in chrome and wondering what site I was on when I clicked a link to open the tab I am on. So I made a chrome extension that stores that site for all newly opened tabs. Just click the "w?" button in the top right and it will create a new tab with that url. You can find the link to the extension here and the source code here.
I have never made a browser extension before, but it was pretty simple to do. The chrome API doesn't have some magic history functions that could accomplish this so I had to store all tab ids and urls. My explanation of how this works will probably be butchered but hopefully someone will find this helpful still.
The first part is the manifest.json file. This stores the basic information of the extension. The "background_page" line tells the extension where are scripts are going to be run from which is background.html. "browser_action" tells the extension that we want a clickable icon and permissions requests from certain permissions from the browser when installed so that we can manipulate protected things.
The second part,background.html, is the actual code of the extension. It is written in javascript and listens for actions in chrome. One note, a lot of the chrome api calls are asynchronous so you must go through coding your application assuming that code will finish running whenever it wants to. There is no way to have synchronized and asynchronous code to work together as javascript provides no blocking and it is single threaded so you can't sit around in a while loop waiting for an asynchronous function to finish.
Here's the first part, whenever our selection changes to a new tab we want to store it in sel.
This listens for whenever a new tab is create in chrome. When a new tab is created we want to grab our last selection from the sel variable. Then we create an object and store the new tabs id and our last selections url and put it in a global array called tabs.
Here's the actual function that is called when the extensions button is clicked. It finds what tab we are currently on then searches through our global array filled with the tab information. When it finds an object with a matching tabid it creates a new tab with matching url.
And that is all there is too it.
Posted at 03:09 PM | Permalink | Comments (0)
Reblog
(0)
| | Digg This
| Save to del.icio.us
|
|
My boss recently saw a significant amount of people on tech sites wanting a xml version of NorthWind, and we ourselves could also use a xml version of NorthWind to show off our reporting software.(By the way check out windwardreports.com we make easy to use reporting software!) So being a software developer intern I was tasked with creating the file.
You might know that there are already NorthWind.xml files out there but these are raw rips, the version I have created comes with more "xml-e-ness":
After having NorthWind-Abboud(My last Name) rejected as the file name to differentiate it from the normal NothWind.xml files we had a flash of creativity and came up with SouthWind.Xml.
To the point, here's the files, have fun:
Posted at 01:55 PM | Permalink | Comments (0)
Reblog
(0)
| | Digg This
| Save to del.icio.us
|
|
To be fair Apple has to assemble the parts itself which takes some money. But a Mac in a lot of configurations can still run hundreds of dollars more than computers built by Dell or any of the large pc makers.
A typical defense from the Apple side is that you are paying for quality and that Macintosh's fail less. Well let's take a look at the data:
Source: http://www.electronista.com/articles/09/11/17/reliability.study.has.apple.4th.place/
Apple has virtually the same failure rates as Dell. It makes perfect sense; they get all their parts from the same companies. Dell and Apple get their processors from Intel, they both choose the lowest quality hard drives such as Western Digital's green line, and even their motherboards both come from Foxconn, which is regarded as one of the worst pc parts manufacturers. For both companies, support for low tier products is 1 year, support for premium products is 3 years. Apple's "high quality" is a myth created by their image and their marketing.
You can argue that OSX's interface is easier to use and more productive or whatever. But interface really comes down to personal preference (and not to mention you can install OSX on a PC). Stability for both operating systems has been outstanding since Windows XP and OSX. The only real difference between the two is that Windows has 100X the amount of applications OSX has.
So if a Mac gets its parts from the same places a Dell does and has virtually the same failure rates, what are you paying for? You are paying for a Dell… in a shiny plastic box.
To see the other side of the argument from an Apple fanboy take a look at my coworker's blog here.
Posted at 12:24 PM in Web/Tech | Permalink | Comments (5)
Reblog
(0)
| | Digg This
| Save to del.icio.us
|
|
AutoTag is a reporting software add-on for Microsoft Office, so it can use either Word, Excel or PowerPoint to generate reports. It is similar to software like Crystal Reports.
AutoTag is a part of Office so the interface is immediately recognizable. If you are using Office 2007 or Office 2010 you gain the huge benefit of using ribbon which is vastly superior to the cluttered toolbars of old that Crystal Reports still uses. AutoTag feels very light weight and friendly when you begin using it. There is no "start page" blabbing on about the company or a nagging auto updater like Crystal Reports uses. Instead you are greeted by a friendly Start Here menu that explains all the basic features of AutoTag and sends you into powerful report generation within minutes.
AutoTag uses "tags" that are placed in any word document. Tags look like markup language when no nickname is being used for them but a nickname is always automatically applied that makes them easily readable. Tags can be simply created by dragging data from a data bin into an office document. If you drag out nested data AutoTag will automatically create a table with its forEach tag, which is a for loop that displays every repeat element for the parent element.
Simple and powerful reporting Tags
Tags can also be created by clicking on the add tags icon in the ribbon interface. Tags are then edited in the easy to use tag editor that provides wizards and help hints that make using tags possible without reading documentation.
A useful tag set is the "if" "else" and "endif" tags which provide easy conditional statements unlike Crystal Reports confusing Formula field. These tags act exactly like any programming languages conditional statements and they can even be nested inside of other conditionals and forEach loops without any effort!
One essential feature lacking from Crystal reports Included in AutoTag is that of a report scheduler that will automatically generate and email reports.
Jumping into AutoTag is a breeze and you can easily create powerful reports through the intuitive design without even looking at documentation. The tag system beats the fields and objects that Crystal Reports uses any day. In comparison Crystal Reports feels like it was originally made as an IDE for Java or C++. But reporting isn't programming, reporting is a problem with a simple solution, AutoTag.
Posted at 04:51 PM | Permalink | Comments (1)
Reblog
(0)
| | Digg This
| Save to del.icio.us
|
|
While Crystal Reports may have some nice features, WindWard Report's AutoTag is leagues ahead in usabilityFor more info check out my blog on WindWard's autotag here: WindWard AutoTag
For those of you who don't know, Crystal reports is a reporting software solution. Reporting software takes in your data sends it to a report template and spits out a pretty looking, informative report.
Upon opening it up and creating my first report I was greeted to a screen that reminded me of an IDE, bars with information everywhere and more icons than you can shake a stick at. At first glance Crystal reports appears to pack enough features to give competing reporting software, such as Windward Report's autotag, a run for their money.
Creating a report template is done by creating fields and objects that take data from your data source and displays them in various ways. Crystal reports also keeps a handy list of all the fields you have created in its field explorer, unlike Autotag's "tags". A very robust field is the formula field which allows you to manipulate data in countless ways through the formula workshop shown below. You can apply mathematical functions such as abs, floor and ceiling, you can even create conditional statements with the formula workshop.
An important object for any reporting software is the Chart object and Crystal Reports offers an extremely customizable chart. There are over 20 different chart types and it has the ability to make any of them horizontal or vertical and it can add a depth of field option to any of the charts.
One cool feature Crystal has that the competition lacks is the preview window, which generates a report with your data inside Crystal Reports so you do not have to generate a file to see how your data actually looks. From the preview Window you can also manipulate the template.
Another interesting feature in Crystal is the alert feature that alerts the user if data meets certain conditional statement. In a complex report with lots of data this would be very useful to tip of the user of a problem, in a similar fashion to unit tests.
A quick look at Crystal Reports will show it is definitely a feature rich reporting solution.
Posted at 03:22 PM | Permalink | Comments (0)
Reblog
(0)
| | Digg This
| Save to del.icio.us
|
|
Enterprise reporting software that truly makes report design fast & easy
