But by the time Nokia took over Symbian it became apparent that they saw Linux as the future OS for high-end devices and Symbian was to be relegated to mid-level devices.
But by the time Nokia took over Symbian it became apparent that they saw Linux as the future OS for high-end devices and Symbian was to be relegated to mid-level devices.
When Microsoft release that memo that killed Symbian, in Brazil its marketshare was INCREASING, there was a lot of people learning how to code for it, many people saw it as a good future, because with it you could make blazing fast CHEAP phones, iPhones were crazy expensive, and android was a slow buggy mess.
Thing is... iPhones are STILL crazy expensive, and android STILL is a slow buggy mess if you buy a cheap one.
I am yet to find a smartphone I like as much I liked symbian based phones, that are phones first, smart second, and work great for actually phoning people.
I only moved to Android when forced to.
The difference between then and now is that modern smartphones use sensor fusion, combining cellular, WiFi, and GPS signals to generate a location. The end result is more accurate output, at the expense of battery life.
Do you have sources? GPS is passive, yes, but the signal is very weak and several orders of magnitude below the noise threshold. Keeping receiver circuits enabled for a long time costs battery power as well. WiFi information can be obtained entirely passively as well, as AP's transmit their info regularly.
I think the difference rather comes from lots of bloaty background services on Android.
Modern devices do the sensor fusion on CPU but it's just polling the GPS chip for coordinates as required, which handles all the actual signals processing stuff.
Oh, I remember it was near impossible to get access to service manuals Level 1 & 2 (just for understand how to repair/replace few parts on my N82), and fully impossible get its Level 3 & 4.[0]
AIKON service centers had monopoly on repairing devices.
All my hopes are now leaning into Cosmo Communicator( https://www.indiegogo.com/projects/cosmo-communicator - please take care, I have jumped into this with "I will loose my money" mentality - I still dont trust, they will realize the linux part, but hope dies last), it reminds me of beloved Nokia Communicator and if they realize my conditions (camera, calls, mms, sms - gps already works same as bluetooth ) I will give my foot a very long swing and remove my Android phone (even if heavly modified) from my life.
https://www.pine64.org/pinephone/ https://shop.puri.sm/shop/librem-5/
Also, F(x)tec are making a keyboard based mobile device along the lines of Cosmo and N900.
No disrespect to the team, it just seems like taking sufficient care of this is a bigger job than they have the resources for.
But I'm glad I backed the kickstarter, and would do the same for something similar in order to diversify a very un-diverse market.
I'm not sure which Java on phone you are referring to, the Android Java or the older J2ME. The older J2ME apps ran well in limited resources, but was also incredibly complicated to develop due to device fragmentation.
I'll have to try the pinephone next, but I have much higher hopes for it.
https://en.wikipedia.org/wiki/Nokia_E61
I actually looked recently at trying to buy another E61 in good condition, and how much trouble it would be to kludge up access to my email through it. I figured it would be more productive for email than my current mainstream smartphone setup.
I have to resist the urge to look into this open-sourced Symbian... :)
That said, it was small, smaller than an iPhone SE. And it had a hardware keyboard. I'm not against fancy apps and stuff on my phone but, besides calling reliability, the first thing I want is to be able to type small things.
I must confess I was unhappy that it even had a touchscreen: a nightmare when it was raining. I guess I just loved the form factor and its promises.
I'm thinking of making this an ode. The E6 ballad. Sorry for that long little-informative comment...
And adding Python support for S60 (PyS60) was the best gift by Nokia for users as it brings Symbian devices to be "on-the-go handheld devs tool for developing apps without desktop PC".[0]
Has you ever know that there is fully functional Blender-like 3D mesh editor & animator app written in Python for S60 (PyS60) directly on Symbian smartphone?[1]
>And adding Python support for S60 (PyS60) was best gift by Nokia
Yeah installing python interpreter in S60 on my Nokia N70 ME, motivated me to checkout Python programming book from my college library. As I was reading it in the class during break, the top-ranking girl student came across and asked me "Why Python, isn't it a dead language?"(circa 2006-2007) I assumed she must be right, I didn't write python until several years later; I bet she's using Python in her job now.
• iPhone's capacitive touch screen vs Nokia's resistive touch with stylus requirement was too much of a friction (pun not intended). 1 year after iPhone's release, Nokia released 5800 marketed as iPhone killer; guess what? it had f'in stylus with resistive screen.
• Then when android happened, which was poor man's iPhone; Nokia hugged Windows Phone OS. Which never became a thing as it lacked Google apps (Google killed it, MSFT would have done the same to Google if places were interchanged). Other comments have detailed possible leadership sabotage related to the MSFT deal, which I agree with.
I guess beside its resistive screen, Nokia 5800 has much more power than iPhone 3G:
- J2ME apps;
- Python for S60 apps (+ Pys60 IDE);
- Qt4 apps;
- Voice input;
- Built-in voice recorder;
- Video recording;
- Frontal camera for video calls;
- 3.2 Megapixel camera with zoom & flash;
- 35 hours of work in music player mode;
- Changeable battery;
- And much, much more.
Here is good comparison list (in Russian).[0]
Btw, you can also add native 3G video calling via front camera to that list, my Nokia N70 did that years earlier in India. Not many westerners seem to know about this feature in my earlier discussions.
[1] https://knowledge.insead.edu/strategy/who-killed-nokia-nokia...
Stephen Elop, Nokia President & CEO since September 2010.[0,1,2,3,4,5]
Since 2011 Symbian & Nokia starts its degradation under Elop 's "leadership".
[0] https://en.wikipedia.org/wiki/Stephen_Elop#CEO_of_Nokia
[1] https://www.europeanceo.com/profile/stephen-elop
[2] https://www.smartcompany.com.au/business-advice/strategy/how...
[3] https://www.theguardian.com/technology/2014/oct/08/nokia-ste...
[4] https://www.theverge.com/2015/6/17/8796465/grand-theft-elop
[5] https://www.theregister.com/2018/02/15/elop_and_the_fall_of_...
TL;DR: "Operation Elop" organized by Microsoft...[0]
What worked on 1 device didn't on another, there was very limited shared UI, and it felt like it was impossible to target multiple devices.
[1]https://en.wikipedia.org/wiki/Mobile_Information_Device_Prof...
I had a 3660 (friends called it the "communications brick"). There was no wifi and I couldn't afford a data plan but I was able to have the phone dialup via Bluetooth (think "reverse tether") to my Linux desktop. I never got into J2ME: being a fledgling Linux snob in college, I went for Nokia's C++ target and got stuck in the quagmire.
I could never accept the coding standard for curly bracket positioning.
OK, so I had to look.
It's like they saw the two main camps (same line vs next line) and said "let's come up with something everyone will hate":
TInt GetROMSize(TInt /*aDeviceNumber*/, TInt /*aAttrib*/, TBool /*aSet*/, TAny* aInOut)
{
TMemoryInfoV1 info;
TPckg<TMemoryInfoV1> infoPckg(info);
TInt r=UserSvr::HalFunction(EHalGroupKernel, EKernelHalMemoryInfo, (TAny*)&infoPckg, NULL);
if (r==KErrNone)
{
*(TInt*)aInOut=info.iTotalRomInBytes;
}
return r;
}Hahaha, how bad could it be...
... Why the fuck would they need to indent every function by an 8-space tab!?
Now, over a decade later, I understand that they looked at the Symbian standard, and saw that anything goes.
I didn't get very far with native Symbian development. J2ME was just so much easier, and ran on everything under the Sun (pun intended).
Was this just a "using different elements of C++" kind of dialect, or was this an "early Win32 when you had to use pretend-C++ (ATL) together with your real C++, bridging the two with C" kind of dialect?
I feel like a lot of application frameworks developed in the 90s ended up in the latter style, as C++ was just becoming popular around then, and many frameworks chose to "merge into" C++ support from C support, rather than creating a ground-up C++ SDK.
No std::string
Custom exceptions (no explicit try...catch, I think only ints could be 'thrown')
2-phase construction for C-classes.
Explicit lifetime management (to be fair RAII wasn't a thing in 'normal' C++ at the time either)
Link by ordinal
One interesting thing was that there were mandated, and strictly enforced, naming conventions and coding style. For example, above I mentioned C-classes. You had to use these in certain circumstances by inheriting from a CBase class. This gave you a virtual destructor and zero-initialised the memory. R-classes were resources classes mainly for things that needed Open and Close functionality.
I joined straight out of university and probably learned more about softare development in my first 6 months at Symbian than in 4 years of uni. There were some incredibly clever people there.
RAII in C++ dates back to 1984-1989, and Strousop wrote about it in his 1994 book Design and Evolution of C++. And C++98 had auto_ptr<>. Symbian's release in 1997 means it had a weird timing relationship with C++ standardization, but RAII was still enough of a thing at the time to be in that very first standardized STL release.
Also, as example of complex apps, there is code of Lonely Cat Games' X-plore[1] & ProfiMail[2] apps, released to Public Domain by LCG devs in 2015-2016.
Another one Symbian open-source app that I like: `fshell` — Symbian equivalent of bash + telnet + a posix-like set of command-line tools.[3]
And the latest app in development: S60Maps — OpenStreetMap & GPS tracker.[4]
FTR, Actually there is an experimental Symbian OS emulator for Linux & Windows.[5]
P.S.: And off course there are tons of useful stuff collected by "Symbian Archive" wiki.[6,7]
[0] https://github.com/trufanov-nok/SymbianBook_ru
[1] https://github.com/Symbian9/X-plore_free
[2] https://github.com/Symbian9/ProfiMail_free
[3] https://sourceforge.net/p/fshell/code/
[4] https://github.com/artem78/s60-maps
[5] https://github.com/EKA2L1/EKA2L1
and I remember another pain point was feature detection, but can't recall the specifics.
It had MMP files which described the project and the files in it, a then a tool called 'abld' which was a perl script that did the compiling, which actually had two commands to clean... 'abld clean' and 'abld reallyclean' :)
Here is how it did its version of std::string:
http://n-gage.org/symbian-sdk-doc/6.1/developerlibrary/Commo...
It actually wasn't too bad once it was beaten into you by the compiler and code reviews. Non-embedded C++ devs can count their lucky stars.
So I took a deep dive into Symbian with very limited C++ understanding. It took me at least a month to figure that that C++ is not C++ at all.
In the end senior engineers, were put on it. Project went nowhere. And then came iPhone and we went down the Mobile Browser Road (years later Apps I think).
But then they were stuck... breaking ABI was forbidden, so more modern C++ features couldn't be used (easily).
Also, the standard doesn't specify "how exceptions work" even today, in the sense that a lot of what happens when running C++ is implementation dependent.
But I can see what you mean about sticking to pre-C++11 (maybe even pre-C++98 ?) APIs.
And as cumbersome as Symbian C++ might have been, Android Studio + NDK + JNI wrappers still make me wish for Carbide + Symbian C++ + PIPS.
Google just doesn't get it, note that major GDC 2020 Android talks are mostly related to NDK improvements, 10 years later.
NDK is designed for Java => NDK libraries only.
I started a company with friends to write games for phones, before they were smart
Our fist breakthrough was at E3 in LA with a game for Nokia 7650, but we worked on prototypes years before
My first mobile connection was with a Nokia 9000i communicator, I was working for an ISP at the time that gave them to us to test mobile connections, and it felt like a James Bond movie
I learned so much developing on Symbian, especially being a diligent C++ programmer on a system that wasn't really using standard C++
Fast forward 20 years, I work on backends in Erlang/Elixir and never touched mobile development again
J2ME was nice, but limited, I lost hope soon after when iPhones came out and it was clear that the mobile platform wouldn't be fun anymore