Finally! Now Amazon Instant Videos (including Prime Videos) left the stale cradle of Kindles and Fire Phones and now available for generic android devices. If you have the Amazon shopping app – you can do a one time videoplayer install directly from it, or you can get it from Amazon App store. Details…
Category Archives: Rant
SAY NO TO FLASH!
Just say no. And tell your kids never to use this piece of junk. And not only because its obsolete and has been replaced by HTML5 long ago. It also promotes bloatware and malware.
I got a prompt from my current Flash player that an update is available. So I ran the update – first it tried to download and install that bloatware of McAfee and only failed because connection to McAfee site failed. But that wasn’t all.
After install finished, I found that my browser was hijacked by “Trovi” malware – start page, search engine etc. And this was done by official installer from Adobe site! Wtf?!
Bye Flash, you won’t be missed.
Reenable (temporary) showModalDialog support in Chrome (for Windows) 37+
You know you shouldn’t use showModalDialog
to open modal windows – it’s bad taste and prone to cause issues. Unfortunately many applications (especially Enterprise ones) rely on the method ability to halt code execution until the window closed (e.g. user answers a YES/NO question).
Tough luck, starting version 37 Google Chrome removed support for showModalDialog
. Your code suddenly began to act in weird and unpredictable way. You definitely should rework it to use a different approach to dialogs. Fortunately Google gives you a bit more time. You can re-enable showModalDialog
support, but only temporarily – until May of 2015. Continue reading →
Infragistics WebDataMenu flashes unexpected color on hover
Infragistics WebDataMenu ASP.NET control comes both with predefined stylesets and allows you granularly overwrite any of the styles. For example definition like this
<ig:WebDataMenu ID="xmyMenu" runat="server" StyleSetName="Office2007Blue" CssClass ="topMenuStyle" > <GroupSettings Orientation="Horizontal" /> <ItemSettings CssClass="itemCssStyle" HoverCssClass="hoverCssStyle" SelectedCssClass="selectedCssStyle" /> </ig:WebDataMenu>
will create a horizontal dropdown menu in default “Office 2007 Blue” styleset but allows you to overwrite individual styles via exposed CSS properties.
Let’s take a look at hover style. Continue reading →
Microsoft Skype Doesn’t support IE11
Ever since I upgraded to IE11 my Skype is throwing error
Digging deeper – the error is throwing while Skype is attempting to display an ad banner
So not only when Skype came into Microsoft possession it stated to display banner ads – in doing so it relies on Internet Explorer and it’s not compatible with the latest version.
How stupid is that?
Pebble Steel: DIY (some assembly required)
Pebble Steel is a new flagship smartwatch of a widely successful kickstarter Pebble. It’s the latest craze and everybody wants one. Unfortunately the demand far outweighs the supply – it’s a well known problem. Pebble can’t manufacture enough new Steels in time, there’re many backorders, missed deadlines, a lot of frustrated, complaining customers.
But Pebble is not called genius for nothing. They found a brilliant solution, one they borrowed directly from the Apple, when the company was at its very humble beginning and was struggling as well. If you recall – original Apple 1 computer was sold as an electronic kit, that users had to put together themselves. This approach solved many problems for Apple back then and it will be very helpful for Pebble today.
Enter “Pebble Steel: Do it yourself” kit. The new Steel will ship as a collection of parts with detailed instructions on how to put them together. Since Pebble Steel doesn’t have to come fully assembled – that will seriously cut down manufacturing time and the product will ship to users much sooner. Cost saved on assembly labor will also be passed directly to customers – expect to see cheaper Steels soon. And since majority of Pebble users are computer/electronics geeks anyway, crowd that loves tinkering with their gadgets – assembling your very own Pebble Steel will come as an interesting and a welcome challenge and will make a proud owner even more proud.
Solution for SqlDataReader.ReadColumnHeader NullReferenceException
This post related to the previous one, but I decided to write a separate article because it seems to be a common problem.
Sometimes when you use SqlDataReader, you would get an exception:
NullReferenceException {“Object reference not set to an instance of an object.”}
at System.Data.SqlClient.SqlDataReader.ReadColumnHeader(Int32 i)
at System.Data.SqlClient.SqlDataReader.ReadColumn(Int32 i, Boolean setTimeout)
at System.Data.SqlClient.SqlDataReader.GetInt32(Int32 i)
And the maddening thing – it doesn’t happen often, just every once in a while. And it happens at different times too, sometimes reader would read 100 records, sometimes 200 etc.
One possible case – SqlDataReader is losing its connection. And one possible reason for that – connection goes out of scope.
Consider following scenario – you have a function that returns SqlDataReader:
Function GetTheReader() as SqlDataReader Dim oConn As New SqlConnection("Connection String") : oConn.Open() Dim oComm As New SqlCommand("Stored Procedure", oConn) Dim oReader As SqlDataReader = oComm.ExecuteReader(CommandBehavior.CloseConnection) Return oReader End Function
And you use it like this:
Dim oReader as SqlDataReader = GetTheReader() 'Begin use reader - loop, read data etc.
The problem with this approach that connection used to create the reader is stored in a private variable inside of `GetTheReader` function and when the function exits – the variable goes out of scope. Eventually, sooner or later Garbage Collector will collect it and close and dispose of connection – and at this time your SqlDataReader will fail.
The solution? Either use SqlDataReader at the same scope level you created it, or, if you do need to use function – pass connection object into it as one of the parameters, so it would remain valid after function exits.
When SqlDataReader is missing rows
I have a very basic scenario:
- Execute TSQL Stored procedure
- Return a DataReader
- Read data from the Reader
This is ADO.NET 101. There is one problem: DataReader loses rows. This problem has haunted me forever, extensive research and numerous suggestion didn’t help, even though the code is extremely basic:
Get the reader:
m_dbSel.CommandType = CommandType.StoredProcedure m_dbSel.CommandText = "SP_Name" oResult = m_dbSel.ExecuteReader()
Pass the reader to class constructor to fill Generic List (of Integer):
Public Sub New(i_oDataReader As Data.SqlClient.SqlDataReader) m_aFullIDList = New Generic.List(Of Integer) While i_oDataReader.Read m_aFullIDList.Add(i_oDataReader.GetInt32(0)) End While m_iTotalNumberOfRecords = m_aFullIDList.Count End Sub
This problem occurs when number of rows returned by the reader is relatively large (over 600,000 records). If this happens – number of rows added to the list from the reader is inconsistent, but always less than real one. Most often “magic” number of 524289 rows is returned.
Well, this is no longer a mystery, thanks to the great people from Stack Overflow @RBarryYoung, @granadaCoder and especially @MartinSmith who was the first to point me in the right direction – and here it is.
Even though the problem is with SqlDataReader – it is happening because it is used in conjunction with Generic List. List, as you may know has a flexible Capacity for number of elements it can store. When count of elements exceeds capacity – capacity increases and always to a power of 2. E.g.
When the count exceeds 4 elements – capacity is set to 8 (2^3)
When the count exceeds 8 elements – capacity is set to 16 (2^4)
When the count exceeds 16 elements – capacity is set to 32 (2^5)
etc..
This is what makes Generic List such a powerful tool, used by many large scale .NET projects, e.g. bingogodz.com. And ordinary this is not a problem. Unfortunately this is not the case when it is used together with SqlDataReader. When count of items in the List exceeds 524,288 (2^19) and its capacity is set to 1,048,576 (2^20) – SqlDataReader’s Read
method suddenly returns False
even though not all records have been read. No exception is thrown, it simple stops.
The only possible workaround I’ve found so far (I am still looking for better ones) is to pre-set List capacity in advance. Since, when using DataReader, you do not know number of rows, you’re left either with hardcoding the number or running another DB query to retrieve number of rows via something like COUNT(*). Like I said, I don’t like this workaround, please let me know if you find a better one.
UPDATE: Finally figured it out: http://stackoverflow.com/a/18520609/961695
WebHierarchicalDataGrid: get_scrollTop() returns incorrect value
Infragistics WebHierarchicalDataGrid has a neat client-side built-in function get_scrollTop()
– it is used if at any point you need to retrieve current vertical scroll position of the grid (e.g. to use it in your own calculations to display something at a specific position on the grid – tooltip, help, additional info etc.)
Unfortunately the function has a bug: its value only set if user actually manually scrolls the grid: using mouse and scrollbar on the right, keyboard etc. If no scrolling user-interaction is involved and scroll position changes due to other means (e.g. displayed data size changes) – the function retains original value, throwing all your calculation out of whack. Continue reading →
Solution for IE10 error: SCRIPT5022: Sys.ArgumentOutOfRangeException: Value must be an integer
If you’re testing your ASP.NET project in Internet Explorer 10, you may encounter following error:
SCRIPT5022: Sys.ArgumentOutOfRangeException: Value must be an integer.
Parameter name: (x or y)
Actual value was (some floating point value)
ScriptResource.axd, line … character …
Often it come up when you use some 3rd party libraries, Telerik or Infragistics (in my case it happened in WebDataMenu control).
Here why it happens. Continue reading →