Suggestions to improve Pocket

I am using Pocket (previously named RIL -Read It Later) and sometimes wish to suggest some improvements for them. Unfortunately they don’t want to have a forum to have such suggestions public( They had it before, but closed it- probably because they are too slow with implementing requested features).

Anyway I will post my emails and feature requests (submit here) to Pocket to increase visibility of my suggestions.

Create User Voice forum

“We monitor Feature Request submissions regularly, so you can trust that yours will be reviewed by our Product Team. ”

To trust that it’s reviewed, user should see, what he/she and other users submitted in the past, have ability to vote and comment on existing suggestings, and see will the feature be implemented and when.

Pocket archive option – keep offline version.

In iPad Pocket when I click tick for article, it moves to Archive, and local copy is not available any more.Sometimes, I’ve read the article and want to put it to archive, but wish to keep local copy for the reference.

It will be good for archive button to have an option – keep offline version.

The option will be in particular useful in case if I clicked tick accidentally.

Pocket Ability to export page/article.

On iPad I want to send some old stored article to a friend. Sometimes the original URL is not available any more. It will be good if share command allow to send the actual file rather than link.
In particular, I am interesting in sending full content to email, to iPad Evernote, and some book reader, e.g uBooks, iBooks,Kindle,KyBooks

Pocket -ability to search by tag

Currently Pocket searches for a pattern within title and URL. It wil be good also search within tags and also to allow to search specifically by tag, e.g tag:myTag.

Pocket to support simple “add URL” functionality.

When I open Pocket on iPad and the last copied to clipboard string was URL, Pocket usually suggests to add it as article. It didn’t prompt me when I wanted to add a particular URL.

I tried to find Add menu to enter/paste URL, but didn’t find it either(I believe, previously it was available). I search for support and found help page telling

The notification bar that appears when Pocket detects a copied URL will only be shown once. Therefore, if you miss it, it will not be shown again

In my case,I think, prompt wasn’t shown because the URL was already added to my list previously.

I appreciate smart logic that try to show Add only when it’s convenient to user.

However Pocket should additionally have Add button to give user control when and what he wants to add.

  An ability to search within article

When reading the article , I often need an ability to search within article.

It is a common requirement for any text reader.

Could you please add it to iOS UI? 

I am normally using not article, but web mode( if it matters).

IOS: option to open link in Safari.

When I select a link in a pocket, 3 options appears-add to pocket, open and copy. Open actually open new page in pocket. As not all pages are opened correctly in Pocket, it will be good to add an option to open link in safari.

Report article menu should ask for details

Report article menu doesn’t allow to specify what the problem is, which makes it quite useless. It should open email form, which allow user to explain the problem.

iPad pocket on slow connection opens blank page

I’ve noticed if I have low wi-fi signal, and try to open some article, blank page is opened and, it seems, app tries to load the article from Internet, even if local cache exists.i have to close the article. 

If I open the same page when wi-fi is completely off, the cached article opens instantly.

Is it a known bug? Can Pocket app have timeout check, and if page is not loaded within e.g.5sec, consider Internet is not available and use local copy instead?

Reply from Pocket:To ensure that Web Views load correctly for you, Pocket will always load the “live” version, not downloaded version, when your device is on a cellular or Wi-Fi connection. I understand this might be inconvenience when you have a low Wi-Fi signal and it’s just coming up blank.  I’ll be happy to submit your suggestion of having a way for the app to have a timeout check and revert to the cache copy. That would certainly improve what’s happening right now!

Stored pages from github have “old version of Safari” warning

Stored pages from github have  warning: “Please note that GitHub no longer supports old versions of Safari. We recommend upgrading to the latest Safari, Google Chrome, or Firefox.” The Pocket viewer should simulate the latest version to avoid such message.

Related previous posts

Pocket Favorites are not available when you off-line 

Using MSBuild Conditional Constructs to run one or other target

I was doing modification of MSBuild target https://github.com/MNF/OctoPack.Precompile/blob/master/Source/OctoPack.Precompile.targets to have different behavior depending on parameter OutDir was specified or not for Msbuild.
Follow to MSDN “MSBuild Conditional Constructs”  I selected  Choose Element and  tried to put it   inside <Target> element
 <Target Name=”foo” />
<Choose>
<When>

<Otherwise>
</Choose>
</Target>
It didn’t work as for Choose Element allowed Parents are only Project, Otherwise, When.
I tried other way to include Target inside Choose/When element, but it is also not allowed, because Target also should be direct child of Project.
I found an implementation in http://stackoverflow.com/questions/30904741/msbuild-now-to-conditionally-use-one-of-two-targets-with-same-name when you set target depends on other targets and each child target has different conditions:
 <Target Name=”foo” DependsOnTargets=”_fooDebug;_fooRelease”/>
    <Target Name=”_fooDebug” Condition=”‘$(Configuration)’ == ‘Debug’ “
Later I found in  http://stackoverflow.com/questions/2284389/how-do-you-stop-msbuild-execution-without-raising-an-error/ that CallTaget elements with condition can be used as well:
 <CallTarget Targets="Exit"
Condition="Special Condition"/>
I beleive that MSDN “MSBuild Conditional Constructs” documentation should provide reference to all such options.

Globally replace obsolete NLog.WarnException using regular expression

I’ve updated NLog ver 2.0 to 4.3.5. After this I’ve noticed a compiler warning that 
WarnException(msg,exc) is obsolete and should be replaced by Warn(exc,msg)

It could be globally replaced using regular expressions 

WarnException\((.*),(.*)\);
to 

Warn($2, $1);

See saved regex in https://regex101.com/r/kL8cR4/1

#nlog, #regex

Changes in .psproj do not cause re-build

With PostSharp I  am using .psproj files 
If I did changes in .psproj file,  simple build didn’t recognize that the project has been changed and skipped the project.

 I had to manually Rebuild the project.

The fix is to change build type of the .psproj file from none to ‘content’ ( may be other types also will work)

#build, #postsharp

Use negative look-arounds regex to ensure pattern not surrounded by undesired characters.

I need to extract from text possible credit card numbers. I have regex for different types of credit cards from http://www.richardsramblings.com/regex/credit-card-numbers/. But if the match preceded or followed by any digit, it is not considered as a valid credit card number, but just as unrelated number.
I’ve tried to add non-capturing group (?:\D|) before and after expected card regex,e.g
(?:\D|^)(?:(?:(?:(4[0-9]{12}(?:[0-9]{3})?))|(3[47][0-9]{13}))(?:\D|$))
It mostly works OK, but if 2 credit cards are next to each other, separated by single character:
 4740515144050,378282246310005
the first card matched, but the second is not found.
Negative lookahead is indispensable if you want to match something not followed by something else.
So I was able to search what I need using negative look-arounds: negative lookbehind (?<!\d) before the expression and negative lookahead (?!\d) after the expression
(?<!\d)(?:(?:(?:(4[0-9]{12}(?:[0-9]{3})?))|(3[47][0-9]{13})|(?:5[1-5][0-9]{14}))(?!\d))
See my example of regex in https://regex101.com/r/iY2aR6/8

 

I want to clarify that the purpose of non-capturing groups is different to look-arounds .
In regex, normal parentheses not only group parts of a pattern, they also capture the sub-match to a capture group.  At other times, you do not need the overhead.
If you need parentheses to work in natural way to only group parts of a pattern, you need to specify non-capturing group by putting ?: after opening parenthesis

#lookahead, #lookbehind, #non-capturing-group

Prevent closing PowerShell scripts running from File Explore

For PowerShell scripts to be run from File Explorer it’s important that they not closed automatically.
I am adding to those scripts
if ($host.name -eq ‘ConsoleHost’)
{
  Read-Host -Prompt “Press_Enter_to_continue”
}
Alternately, we can modify the “(Default)” values for our Command keys to include the “-NoExit” parameter.
First I decided,that it is a good idea,and added

 

Set-ItemProperty  HKCR:\Microsoft.PowerShellScript.1\Shell\Command ‘(Default)’  ‘”C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe” “-NoExit” “-ExecutionPolicy” “RemoteSigned” “-file” “%1″‘

 

But then I realized, that  if PowerShell script should be shared with other users, it’s better to explicitly implement pause in a script rather then rely on registry setting on other machines.

IPad AppStore “update all” should not stop if one of updates failed

I’ve submitted the following suggestion to Apple iPad Feedback(unfortunately they do not keep the suggestions on public forum):

iPad AppStore “update all” stops if one of updates failed. It should skip failing app and continue to update others.

It also doesn’t give any feedback why update failed. There is normal software practice to show error message and provide advise how to workaround the problem.
In my case update failed for app, that I originally bought but then requested refund, as it didn’t work as expected. Ability to skip such app or suggestion to delete it will be useful.

#apple, #appstore, #feedback, #ipad

AutoPropertiesToString helper method

I needed in ToString() method for a class to log auto-properties.  Below are two methods that I used

/// <summary>

///

/// </summary>

/// <param name=”obj”></param>

/// <param name=”declaredOnly”></param>

/// <returns></returns>

/// <remarks> Created to log  DeclaredOnly in the current class using GetType().GetProperties(), for full object dump other methods may be more appropriate

/// See  http://stackoverflow.com/questions/4023462/how-do-i-automatically-display-all-properties-of-a-class-and-their-values-in-a-s

/// and  http://stackoverflow.com/questions/852181/c-printing-all-properties-of-an-object?lq=1

///  </remarks>

public static string AutoPropertiesToString( object obj, bool printNulls=false, bool declaredOnly=true)

{

BindingFlags flags = BindingFlags .Public |  BindingFlags.Instance;

if (declaredOnly) flags |= BindingFlags.DeclaredOnly;

var propertyInfos = obj.GetType().GetProperties(flags);

var sb = new StringBuilder();

foreach ( var info in propertyInfos)

{

if (info.IsAutoProperty())

{

var val = info.GetValue(obj, null);

if (printNulls == false && val == null)

continue;

var value = val ?? “(null)”;

sb.AppendLine(info.Name + “: ” + value);

}

}
return sb.ToString();

}
/// <summary>

/// It’s not fool proof, quite brittle

/// </summary>

/// <param name=”info”></param>

/// <returns></returns>

/// <remarks> from http://stackoverflow.com/questions/2210309/how-to-find-out-if-a-property-is-an-auto-implemented-property-with-reflection </remarks>

public static bool IsAutoProperty( this PropertyInfo info)

{

bool mightBe = info.GetGetMethod().GetCustomAttributes(typeof (CompilerGeneratedAttribute ),true ).Any();

if (!mightBe)

{

return false;

}

if (info.DeclaringType == null)

return false;

bool maybe = info.DeclaringType

.GetFields( BindingFlags.NonPublic | BindingFlags.Instance)

.Where(f => f.Name.Contains(info.Name))

.Where(f => f.Name.Contains( “BackingField”))

.Any(f => f.GetCustomAttributes(typeof (CompilerGeneratedAttribute ),true ).Any());
return maybe;

}

#net, #auto-properties, #tostring

Windows Feedback application in Windows 10 is very immature.

Recently I wanted to submit feedback to mIcrosoft and had to use Windows Feedback application in Windows 10. I was surprised how immature it is. They have Connect website  https://connect.microsoft.com that working fine for many applications, including visual studio and SQL server. They also using Uservoice sites, that also have acceptable user interface( apart of stupid limit for number of votes). What was the reason to create new proprietary application, supported only by Windows 10.

Link in MS Feedback is generated as something like

 Windows-Feedback:?contextid=79&feedbackid=b11f8bdf-eaf4-4799-8e65-5161924ad22c&form=1&src=2

As you can expect, browsers do not understand these links. Even when I copied the link into feedback search field, it didn’t find it.

When I upvoted existing feedback, I’ve added a comment. However, when I open the same feedback again, my comments were not visible. They  should show the all discussion, not only initial suggestion.
I am not able to copy text of existing feedback. I opened it but text is not selectable. I tried to share via mail, but the feedback is added as image, not as text. 
It will be much better if MS will create Web client for feedback database to be viewed in normal browser.

#feedback, #windows

I moved my blog from GeeksWithBlogs

This is my first post at WordPress. I  had a http://geekswithblogs.net/mnf/ blog at GeeksWithBlogs for 10 years. But recently I had a big concern, that  GeeksWithBlogs site is not supported at all. The support does not reply to emails, Twitter messages and reports on the support forum.  I will not be surprised, if the GWB site will suddenly shutdown without any warning.

I did a research to find  a blogging platform, and WordPress was recommended in most places. It was a big work to migrate the blog, because there is no out of the box tools ( The  code that I was using is located on https://github.com/MNF/gwb-to-wordpress ).

Now I am thinking how can I achieve the traffic and search engine ranking, that I had in GeeksWithBlogs.

#blog-migration