|
I’ve been using Windows Phone 8 for a while now. Here are a few of my favorite features that didn’t get announced yesterday. One user shares his favorite unsung WP8 features.
|
|
|
|
|
Not sure why this was univoted. Countered.
I think computer viruses should count as life. I think it says something about human nature that the only form of life we have created so far is purely destructive. We've created life in our own image.
Stephen Hawking
|
|
|
|
|
"This site is currently not available..."
Looks like Azure doesn't like WP8.
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
What happens if you give a thousand Motorola Zoom tablet PCs to Ethiopian kids who have never even seen a printed word? Within five months, they'll start teaching themselves English while circumventing the security on your OS to customize settings and activate disabled hardware. Whoa. Inspiring kids to go out and learn by teaching themselves.
|
|
|
|
|
Terrence Dorsey wrote: never even seen a printed word?
Personally I feel it is important to be able to read books before using computers. Like learning to walk before you run.
=====
\ | /
\|/
|
|-----|
| |
|_ |
_) | /
_) __/_
_) ____
| /|
| / |
| |
|-----|
|
=====
===
=
|
|
|
|
|
How about eBooks?
- Life in the fast lane is only fun if you live in a country with no speed limits.
- Of all the things I have lost, it is my mind that I miss the most.
- I vaguely remember having a good memory...
|
|
|
|
|
One of the comments on the article says:
(Sugata Mitra has been doing this for years in India in his "Hole in the Wall" project.}
The details: A wall separates a slum from from an office park in New Delhi. Sugata Mitra put a monitor in a hole in the wall and put a mouse and keyboard. A videocamera high up on the wall or a tree recorded what was happening. The slum kids saw the computer and keyboard and started playing with it and taught themselves Word and whatever other software was installed on the PC.
Been there, done that!
|
|
|
|
|
Even though the new phone has completely changed the underlying operation system to use the same WinRT sub-system that powers Windows 8, the basics of how to build apps on the phone is primarily the same. This means if you have experience building XAML-based projects, you should be right at home with Windows Phone 8. A lot has been talked about the new Operating System and it's new tile layout and other features. But what I want to explain are the new developer features that I am excited about. What are you excited about in WP8?
|
|
|
|
|
|
|
Excellent article. Unfortunate he turned off comments; a blog without comments isn't a blog.
But a great article nonetheless. He argues convincingly that because System.String is so easy to use, people end up building new strings all the time, allocating memory and increasing pressure on the garbage collector, and, contrary to popular belief, this is not free.
I'm reminded of this recent article: Why I Program in Erlang[^]. The author makes the case that Erlang's non-obvious implementation of strings is the right one:
Or take string concatenation. If you pop open the implementation of string concatenation in Perl, Ruby, or JavaScript, you are certain to find an if statement, a realloc, and a memcpy. That is, when you concatenate two strings, the first string is grown to make room for the second, and then the second is copied into the first. This approach has worked for decades and is the “obvious” thing to do. Erlang's approach is non-obvious, and, I believe, correct. In the usual case, Erlang does not use a contiguous chunk of memory to represent a sequence of bytes. Instead, it something called an “I/O list” — a nested list of non-contiguous chunks of memory. The result is that concatenating two strings (I/O lists) takes O(1) time in Erlang, compared O(N) time in other languages. This is why template rendering in Ruby, Python, etc. is slow, but very fast in Erlang.
Duffy's .NET strings article got me thinking about more efficient ways to represent a string. Obviously we have StringBuilder. Would passing around lazy IEnumerable<char> be any different?
Or some amplified type from there?
Interesting thought exercise. But in my day-to-day work, I'm happy just using System.String.
|
|
|
|
|
Judah Himango wrote: a nested list of non-contiguous chunks of memory
Judah Himango wrote: The result is that concatenating two strings (I/O lists) takes O(1) time in Erlang, compared O(N) time in other languages
Sounds like a linked list of strings (or tree), which is how I implemented StringBuilder+ (see my articles if you are curious). That's not good for some things though, such as doing a substring operation (you'd have to scan through the linked list to find the one that contains the section of the string you are trying to substring, which turns an O(1) operation into an O(N) operation). There are some optimizations that can be made, but using a linked list isn't the ultimate solution.
|
|
|
|
|
AspDotNetDev wrote: you'd have to scan through the linked list to find the one that contains the section of the string you are trying to substring, which turns an O(1) operation into an O(N) operation That's why rope[^] exists. But I don't like that one too much either - the nodes are too small compared to the size of a cache line. I tried to make it more B-tree-like, but it didn't quite fit somehow. Someone else could probably figure that out.
|
|
|
|
|
A good read - thanks, Dave!
/ravi
|
|
|
|
|
Beware the code that doesn't work!
string str = ...;
int lastIndex = 0;
int commaIndex;
while ((commaIndex = str.IndexOf(',', commaIndex)) != -1) {
Process(substr, lastIndex, commaIndex);
lastIndex = commaIndex + 1;
}
- The string passed to the
Process method should be str , not substr ; - By passing
commaIndex to the IndexOf function, this code would enter an infinite loop, if it would compile.
(It actually generates a "use of unassigned local variable" compiler error.) - If you change it to
lastIndex , it will miss the last item in the string.
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
The code may be bugged, but the discussion was sound.
|
|
|
|
|
Yes, I agree the discussion is sound; I was just pointing out that it's harder to write correct code without using the built-in functions.
I've just finished throwing together a struct to cover the common substring operations, and I've reached 500 LoC (excluding comments).
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
Notices will be sent out to developers of up to 100 mobile apps that are not compliant with California privacy law, starting with those who have the most popular apps available on mobile platforms, the office of the state's attorney general Kamala D. Harris said Tuesday. ITworld]
|
|
|
|
|
That will be a real impact on the small developer. $2500 penalty each time the app is downloaded. So much for making a profit/
|
|
|
|
|
Intel researchers are working on a 48-core processor for smartphones and tablets, but it could be five to 10 years before it hits the market. "If we're going to have this technology in five to 10 years, we could finally do things that take way too much processing power today," said Patrick Moorhead, an analyst with Moor Insights and Strategy. "This could really open up our concept of what is a computer... The phone would be smart enough to not just be a computer but it could be my computer." Meanwhile, fashion designers are researching pants with fan-cooled phone pockets.
|
|
|
|
|
To effectively use multiple cores, you need to write the software. That means the the current generation of languages such as C++, C#, Java really are not designed to handle all these cores. Maybe the functional languages can do better. Of course I guess the compiler can do the job, but so far that has been difficult.
|
|
|
|
|
Clifford Nelson wrote: To effectively use multiple cores, you need to write the software. That means the the current generation of languages such as C++, C#, Java really are not designed to handle all these cores.
Are you referring to Processor Affinity?[^]
dev
|
|
|
|
|
Actually no, I was refering to being able to program so that parallelism becomes like memory management. You basically do not have to worry about it. But thanks for the link.
|
|
|
|
|
ok... here's one thought i have for our app
(a) Assign processor affinity to a calc job (exe, kicked started by another exe/calc controller) based on user
(b) Assign processor affinity to a calc job (exe, kicked started by another exe/calc controller) based on calculation type
I don't think .NET framework or Windows can make that decision for you...
dev
|
|
|
|
|
Clifford Nelson wrote: the current generation of languages such as C++, C#, Java really are not designed to handle all these cores
somebody banned the use of threads? :S
|
|
|
|