Netgear WNR1000v3 router port forwarding bug

My router was supplied by Plusnet (firmware V1.0.2.30_53.0.66B1). It has several bugs in the port forwarding function.

First the good news:

  • It WILL forward port 80 to port 80 on another server

Now the bugs:

  • The User Interface prohibits forwarding any inbound port to other well known ports such as 8080
  • The User Interface permits forwarding to unknown ports such as 6080
    • but it does not actually forward the traffic from port 80. A connection is permitted to port 80 but there is no traffic on it.
      • but port 6080 inbound which should be blocked is now open and forwarded to 6080 on the target server

 

 

Posted in Application design, Cloud, Infrastructure | Tagged , , | Leave a comment

PyCon tweet proves email is not worst form of communication

I have long thought that email was the worst form of communication; primarily because it involves no real conversation, only the author giving his views to the recipient. But Adria Richards, who in her own words is a “Joan of Arc” like figure has proved me wrong.

The feminist Ms Richards was offended by the private conversation of the men behind her at a Python developers’ conference and tweeted their picture to the entire world. This resulted in both the man concerned and Ms Richards being fired. Get the full story from  The Register.

This case raises many issues. There is something wrong when you can get fired as result as a result of electronic surveillance of a private conversation in a public space; in an earlier post I highlighted the issue of a man hounded out of his job for private comments made on Facebook. However this is not the topic of this post.

If something offends you at work, whether it is the insanity of using camelCase or the sense of humour of your colleagues, sending an email or tweet is not going to make the problem better.

Problems are solved by people talking to each other face-to-face. If the issue is a technical one then arrange a workshop and talk the issue through. If it is social one and you don’t feel  brave enough raise it with the person concerned then raise it with your line manager. That is what they are there for.

In one way at least, Ms Richards has struck a blow for female equality. She showed that woman  in IT can be as socially incompetent as men.

Posted in ElephantPM | Tagged , , , , | Leave a comment

Create the Union of two tables in Excel

It is very common in Excel to need to create a single table from the two or more other tables. For example, different users may edit different worksheets but you need to aggregate all the data for processing.

This can be done relatively simply using structured references to tables. I have my data in two tables “Table1″ and “Table2″ and I want the union in “Table3″. For convenience I create RowId column in Table3. To the right of this I enter,

= IF([RowId]<=ROWS(Table1)
    , INDEX(Table1[column1],[RowId])
    , INDEX(Table2[Column1],[RowId]-ROWS(Table1))
  )

The IF statement determine whether we should be rendering a value from Table1 or Table2. The INDEX function returns the data from the appropriate column and row.

In practice there is a small problem with this formula; when you drag it right to create more columns Excel treats the [RowID] as a relative reference and changes it. To make it absolute we use the INDIRECT function. This does not change the simple logic of the above formula but makes it easier to use.

=IF( INDIRECT("Table3[RowId]")<=ROWS(Table1)
    ,INDEX(Table1[column1],INDIRECT("Table3[RowId]"))
    ,INDEX(Table2[Column1],INDIRECT("Table3[RowId]")-ROWS(Table1)))

union

Posted in Excel | Tagged , , | 2 Comments

How to add a row number to an Excel table

Excel tables provide a lot of support for data processing and the use of structured references can improve readability.

We want to number rows in an Excel table and we can do it really easily using structured references.

=ROW(Table01[@])-ROW(Table01[[#Headers],[RowId]])

We simply find the row number of the current cell [@] using ROW and then subtract the row number of the column title in the table header. Excel auto-completes the formula as you type and click.

  1. Type “=ROW([@]) -Row(“
  2. then click the table header
  3. Excel enters the cell reference.
  4. Close the brackets and click Enter
  5. job done.

range2

Posted in Application design, Microsoft SQL Server | Tagged , , , | Leave a comment

A T-SQL SPLIT function

When taking existing data to put into a data warehouse one hopes that it is nicely formatted. This is seldom the case and recently I was faced with the problem that single field contained a rather dirty list. First I cleaned the list using REPLACE to replace the variety of delimiters with comma. Then I used this excellent T-SQL function to extract the items from the list.

FN_STRING_HELPER_SPLIT(
   @text_to_split
 , @delimiter
 , @index_of_list_item_to_return
)
          kgalli

Here is an example of it in use,

select
        list
      , FN_STRING_HELPER_SPLIT(list,',',1)
       ,FN_STRING_HELPER_SPLIT(list,',',2)

Things to note,

  • This is a scalar function, it will only return a single item from the list
  • You have to choose how many columns you extract
  • If you ask for a non-existent item it seems to return the last non-null item rather than null.
  • This does not create additional records, there is no transposition or un-pivoting of the extracted fields. This can be done manually by creating a view that that unions two queries that select item 1 and item 2 into a single column called item.
  • Extraction and un-pivoting can be done in a single operation using the APPLY function and table-valued functions but this code  is conceptually complex.
Posted in Microsoft SQL Server | Tagged , , , | Leave a comment

Opera joins Google/Apple in-crowd with shift to WebKit and Chromium

http://go.theregister.com/feed/www.theregister.co.uk/2013/02/13/webkit_sucks_on_webkit_chromium/

Posted in Uncategorized | Leave a comment

SQL Server Import Wizard cannot import fields containing more than 255 characters

I have been importing data from Excel to SQL Server using the SQL Server Import Wizard. Usually there is no problem but I have found a bug.

1. To reproduce: Try to import a column containing more than 255 characters text, optimistically set the destination datatype to nvarchar(max) and the failure options to “ignore” on error and “ignore” on truncation.

2. I expect the Wizard to run successfully; nvarchar(max) has a 2GB limit and if I exceed this (I don’t) then it should ignore the error and truncate anyway

3. Actually the Wizard fails with the error ”Text was truncated or one or more characters had no match in the target code page.”

This is a known bug to do with the way the wizard samples the source at the beginning. There are two workarounds,

    1. ensure that there is a row at the top of the record set with the maximum width OR
    2. You can increase the number of rows sampled by increasing the value of TypeGuessRows under the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\4.0\Engines\Excel registry key. (from social.msdn)

I used A.

Things that didn’t work,

    • defining the table with the right field lengths first and assuming the wizard is not buggy
    • exporting to CSV and using flat file inport
    • anything to do with the code page, this is red herring.
Posted in Infrastructure | Tagged , , , , | Leave a comment

How the Internet has Changed the Spread of Information

Something new today, a post by a guest blogger John Harris on how the internet has changed the spread of information. Away you go, John,

In the past couple of decades, the Internet has transformed from a classic message board to a tool that is used to instantly communicate with loved ones, release new products and share information and news in a heartbeat. With the invention and progression of the Internet, people from all across the globe are able to stay in contact with one another with computers and even mobile devices. There are many ways the Internet has changed the spread of information helping to advance society and humanity altogether.

Instant Alerts

Today, those who are connected to the Internet via their computers and mobile phones are capable of receiving instant updates from family members, friends, news websites and even business partners without having to log in to their email after work to check in. Instant alerts are often sent via social media websites and with the use of RSS feeds, which can be accessed from your email as well as from mobile applications you may have installed.

It is also possible to subscribe to specific keyword alerts that appear in the news, giving you the ability to hear first whenever there is anything happening near you or even globally, regardless of where you are located.

Social Media

Using social media has changed the way the Internet spreads information within the past decade. Social media is a way to instantly connect with associates, co-workers, family members and friends from any device that supports having an Internet connection. Social media influences specific demographics and allows users to share world and global news as well as local news without being required to own a television set or to subscribe to cable. With the use of social media it is possible to keep all of your contacts informed of any updates including weather, traffic accidents, new laws being passed and even big events that may be happening locally or nationally at any time. Social media is free to use and has connected billions of users all over the world in a short amount of time. Without social media, Internet users would still be limited to sending emails and forwarding information at a significantly slower rate.

Freedom of Speech

Because of the freedom of speech we are privy to in the West, spreading information on the Internet is not restricted as it is in some countries around the world. Sharing news on political views, religious opinions and even new advances in medical research and technology is all possible with the use of social media tools, communities and even with instant messaging.

Bloggers

A major factor in the advance of spreading information with the use of the Internet comes from bloggers themselves. Running a blog is a way to express opinions and to share information and facts on any subject you are interested in with a specific audience or simply with your loved ones and friends from around the world. Blogs can be hosted freely by any individual or a small business looking to gain exposure and more popularity online. Bloggers are often considered independent journalists who discover new trends, advances in technology and specific subjects and who also enjoy sharing and spreading news with their own online followers. Using a blog is an ideal way to spread information on the Internet regardless of what you have to say.

This article was written by John Harris. John specializes in blogging about social media, home vs mobile internet and new technology.

Posted in Uncategorized | Leave a comment

Office 2013 upgrade – red pill or blue pill?

The red pill and its opposite, the blue pill, are pop culture symbols representing the choice between the blissful ignorance of illusion (blue) and embracing the sometimes painful truth of reality (red).

Wikipedia about The Matrix movie

I have to decide whether to upgrade to Office 2013. If I want my life to be easy I should just take the blue pill and do what Microsoft tells me to do; pay them a monthly check and live a comfortable Microsoft cloud.

But no, I will take the red pill and read “Microsoft Office 2013 vs. Office 365: Is either right for you?” for pricing information and investigate possible alternatives.

You might think that you have a choice and that taking the red pill will open up new possibilities; Mint instead of Windows 8, LibreOffice Calc instead of Microsoft Excel. But Linux bricks Samsung laptops, Google Chromebooks don’t work well off-line and Calc does not have VBA macros (actually this might be good thing!).

The cost of a blue pill? about £ 100 per year. It would cost me a lot more just to learn to use Calc. As I often say in business “it’s not the principle of the thing, it’s the money” and in this case ignorance is cheaper than knowledge.

Posted in Business models, Cloud, Infrastructure | Tagged , , , , , , | Leave a comment

A review of JavaScript drawing libraries for flowcharts, Gantt charts and timelines

Overview

I manage my projects using my own ElephantPM project management methodology. This is a similar in many ways to PRINCE2 but is greatly simplified so that it is suitable for use by smaller organisations.

My needs

ElephantPM divides the Start-up stage into an analysis step and a planning step. During the analysis step it is necessary to create several diagrams,

  • A mind map showing the output of the Discovery Workshop
  • An “org chart” showing the breakdown of the project into Business Deliverables
  • A flow chart showing the order in which Business Deliverables should be made
  • A diagram showing the relationship between stages and the production of Business Deliverables

During the planning step it is necessary to produce

  • Gantt Charts showing the Project Schedule and Stage Schedules

Current solution

Over the years I have used various tools to produce these charts but I have now settled on Freemind and Microsoft Project 2010.

Freemind is my preferred mind mapping tool. It is free, very powerful and runs locally in Java. It has far more features than I ever use.

I have spent many hours creating custom templates for Microsoft Project so that making the diagrams is reasonably efficient but there are still some hassles and at over £ 500 a copy it is very expensive drawing package. I use custom views to produce,

  • Network diagrams
    • Business Deliverable Breakdown
    • Business Deliverable Work Flow
    • Stage Contribution to Business Deliverables
  • Timeline
  • Gantt charts
    • Project Schedule
    • Stage Schedule
    • HerdPM (programme view)
    • NurseryPM (programme view)

JavaScript alternatives

Could I create my own tools to draw these diagrams? These would have the advantage of a very slick workflow. Information could be entered once and then flow down between the diagrams. Standard templates could remove most of the actual drawing. My preferred user interface technology is JavaScript so I have done a review of available technologies.

JavaScript mind maps

Flowcharts

There are no purpose built flowchart libraries. The only choice is to use a general purpose JavaScript drawing library and specialise it.

Timelines (none are Microsoft Project 2013 like)

<quote source=http://okfnlabs.org/blog/2012/12/04/javascript-timeline-libaries-a-review.html>

“Propublica Timeline Setter

Verite Timeline

http://timeline.verite.co/
Very elegant frontend design
2 bands in timeline segment and tight integration of item display
Includes much more than Timeline (e.g. sourcing data from google docs etc)
Mozilla Public License (was GPL)

Simile Timeline

http://www.simile-widgets.org/timeline/

The original open-source JS timeline but less regularly update and maintained today: “As of Spring 2012, Exhibit is the only Simile widget seeing active development.” and the timeline control has not been updated since 2009 (see this stackoverflow question for more

Chronoline
http://stoicloofah.github.com/chronoline.js/
Recently developed and updated
MIT licensed

Timeglider
https://github.com/timeglider/jquery_widget
Non-open license (but was MIT licensed earlier on

CHAPS Timeline
http://almende.github.com/chap-links-library/timeline.html
Looks pretty nice though CSS is not quite as elegant (probably fixable!)
Not clear whether it supports multiple bands”

</quote>

Gantt Charts

The Gantt chart implementation in Microsoft Project 2010 is very sophisticated  features include,

  • It is editable,
  • editing the start date and duration by dragging
  • edit dependencies by dragging
  • show one or more columns of data to left
  • editing columnar data changes the chart
  • zooming
  • time scale management

Possible solutions include;

and from this review

  • DHX Editable JavaScript Gantt Chart ($299)
  • http://www.bryntum.com/products/gantt/(OEM Price on application, need Ext js licence).
    • Very beautiful and fully featured
  • jsGantt (BSD)
    • Read-only but very clean. could possibly be extended. No checkins for 2 years
  • jquery.ganttView
    • read-only
  • gantter - free cloud based scheduling
    • they don’t sell their component
  • TreeGrid Gantt (about 900 USD)
    • Completely awesome chart. “TreeGrid Gantt chart is an application core for building online (web based) project management software like MS Project or Primavera. Is also used to display and control any data in row and bar based chart.It is the most complex web Gantt chart on the Internet.”

General purpose libraries

MIT or LGPL licences

      • jsPlumb (GPL, MIT)
        • jsPlumb provides a way to “plumb” elements of a UI together using connectors. It is a really fully featured and the author is an active committer to GitHub
      • Joint (MIT)
        • Joint is a JavaScript library for creating diagrams. The diagrams can be fully interactive. Joint library is suitable for both implementing a diagramming tool as well as simply for publishing your diagrams.
      • jit JavaScript Infoscript toolkit (licence unclear – probably MIT)
        • beautiful renders
      • http://diagramo.com/ GPL
        • good general purpose diagramming plugin using PHP, MySQL and JavaScript. GPL but a commercial version is available.
      • WireIt (MIT)
        • Demos only show simple features not complete drawing applications
      • Raphael (MIT)
        • Really vector graphics rather and diagramming. Raphaël is a small JavaScript library that should simplify your work with vector graphics on the web. If you want to create your own specific chart or image crop and rotate widget, for example, you can achieve it simply and easily with this library. Part of Sencha Labs

Commercial licences

        • MindFusion ($300)
          • The library is written 100% in JavaScript and uses the HTML5 Canvas for drawing. JsDiagram depends on the Microsoft Ajax® library for type system implementation and browser independence
        • .Draw2D touch (499 EUR)
          • Create Visio like drawings, diagrams or an workflow editor with the Javascript library.The User interface allows interactive drawing by using your standard browser. No additional software; no third party plug ins. Just run it and use it.
        • GoJS HTML5 Canvas (from $2795)
          • GoJS is a fast and powerful JavaScript library for implementing interactive diagrams in HTML5 web application. The design of GoJS is similar to the design of our other diagramming controls and to GoXam in particular. The design includes support for templated definitions of complex parts and data-binding of graphical object properties to model data. Many good diagramming examples including flow charts, mind maps and UML diagrams.
        • yworks ($5000)
          • Files for HTML brings the proven power and ease of yFiles diagramming to your cutting-edge HTML5 applications.
        • jGraph Mx graph ($5,500)
          • mxGraph is simple, you include it as a JavaScript link in your HTML file and you instantly have access to the cleanest, most functional native browser diagramming component available.

Conclusion

The starting point is a mind map application. There are no suitable open source or commercial applications and there are very few features that have to be implemented to make a usable tool. The two most suitable free libraries seem to be jsPlumb and Joint, jit is very pretty but orientated towards visualisation rather than editing.  I think that either of these free libraries would be suitable to build a simple mind map application.

Moving on to the need for flowchart software, this is somewhat more complex and I think that the only way to find out which of the free or commercial packages best meet my needs would be to build a reference application. This will flush out how easy they are to use in practise.

Now we get to the timeline software. None of these look much like a Microsoft Project 2010 timeline because they are much more sophisticated. The simile widget is perhaps the most suitable but it might be sensible to keep it simple and start from scratch.

Finally I consider Gantt charts. These range from the simple jsGantt to the very complex TreeGrid Gantt. I think that investing time and effort in TreeGrid Gantt would be worthwhile because (hopefully) one could start with simple read-only renders of tabular data and Gantt bars and then move on to more complex interactive charts.

I hope that you have found the review useful. If you have used any of these products or have anything to add please make a comment.

Posted in Application design, Business models, Cloud, ElephantPM, Frameworks, HTML5, Project Management | Tagged , , , , , , | 2 Comments