|
I have studied MS Sync framework a bit and I think I have an idea of a better solution.
The problem:
Sync frameworks that I know of, so far, work on data. They are coupled either with client side databases (like SQLite on mobile), server side databases, or even both. Moreover, they add fields to our database tables. That's error prone, costly and doesn't allow any easy or cheap way of implementing transactions.
Solution:
I think a better approach is possible; instead of syncing 'data', we can sync 'events'. Using 'event sourcing' pattern, applications can keep track of changes they make to data. If these events are sent to server instead of data, server can recreate database instead of replicating client side data. No longer has server database needed to be bound to a syncing technology, heck it doesn't even need to know what sort of store each client is using. Server can optimize events before applying them on database or check them for possible conflicts. In case of a real conflict, the set of events can easily be rolled back so it gives a cheaper transaction implementation possibility. Furthermore, no table will need to be touched in order to create such a synchronization mechanism.
Just some ideas and a very basic raw untested theory, need to research more on the subject. As soon as I find a bit of free time, I’ll try implementing this. If it works, it might actually become big, IMO.
modified 7-Dec-14 3:51am.
|
|
|
|
|
Type in a search engine REST VS. and the first result is 'SOAP'! Then there are lengthy blog entries explaining the difference. This makes me close my eyes for some seconds and dream about a world in which Internet could be cleaned up of all sorts of useless words, so real pros voices could be heard.
Nevertheless, here's my 2 cents on the subject:
REST(Representational state transfer) is an architectural style. On the other hand, SOAP (Simple Object Access Protocol) is a protocol. So it is really comparing apples and oranges.
The thing is, for writing and consuming services, we can follow guidelines/restrictions of REST, which by the way says nothing about the protocol (No, it doesn't need to be over http) and thus create a RESTful (why should it be written in such an ugly way, I don't know!) service or use other approaches. One of the other most popular approaches is message based SOAP protocol, often implemented by following guidelines of SOA(Service-oriented architecture).
If you dig deeper, you'll notice that in order to implement SOA, lots of patterns and standards are used. There are many SOA books available if you are interested to understand it better, or if you enjoy design patterns like I do, it's worth to take one and read a few pages to see what patterns are evolved over time to shape SOA.
As a programmer who invested on Microsoft technologies for the past ten years, what I know as an implementation of SOAP for communication is WCF and the one using REST style is called WebAPI.
I found one of the properties of REST to contradict some restrictions. The property is "Performance" and restrictions are "Self-descriptive messages" and "Manipulation of resources through these representations" which basically say that each message and also each piece of data must be self explanatory so without the need of any metadata or contract, client can manipulate data or access related information. Just imagine how much relationship/manipulation (I'm not talking about known URLS for manipulation like GET/PUT/DELETE) data each record should hold. How then it will have high performance?
Nevertheless, most web based RESTful services aren't RESTful based on those restrictions and prefer performance over those restrictions when it comes to implementation.
|
|
|
|
|
<DIV> is a nightmare for many website programmers. Compared to that, WPF layout tools ROCK!
I think it might be because they are tailored.
While <DIV> is the one magical layout tool which is going to do everything, its behavior can be interpreted differently (and it actually does by different browsers), WPF comes with a set of tailored tools (StackPanel, Grid, LayoutPanel, etc.), each of which does one simple thing that cannot easily be interpreted otherwise.
Interestingly, same is happening in hardware world. All-in-one desktop PCs are being threatened (not by tablets alone but) by the sheer volume of different devices, each of which are tailored to do one thing and doing it better than PC does.
Planning to move to Germany, looking for a job there!Looking for a Windows desktop programmer? I look forward to hearing from you!
|
|
|
|
|
If I want to name main issues with Win 8, on desktop, I'd say:
1. Lost control
This was the main issue I had with Metro style apps. Not knowing where to expect to click/right-click/touch for magic to happen. Even default applications did NOT use exactly same layout and if they did, they were so frighteningly incomplete in number of features. I couldn't adjust simple things like detailed quality settings of my Webcam!
Not having old multi-tasking features, made my daily works slower. It felt like it was forcefully limiting me.
2. Unorganized, Untidy and Chaos.
Some items on the right, some on the left. Path to commonly used settings are going further and further away. (Try changing IPv4 settings in XP, then try it on Win 8!).
Newly installed applications appeared all over the start screen and it was impossible to organize them the way I wanted.
Some windows settings would open in desktop, some seemed to be accessible only via Metro.
3. Look and feel
It felt incomplete, like designs of a new graduate graphic student while Windows 7 looked really mature.
I am back, and unlike my journey back from Vista to XP, now I don't feel in an outdated world, but a different world, a better one to be honest, one with more freedom!
Update:
Couldn't resist again! A few weeks ago I installed 8.1 + ClassicShell. It's like 7, stable and everything, only faster. I like this OS on desktop, still don't like Metro GUI. Hope next Build event brings good news to all of us.
Planning to move to Germany, looking for a job there!Looking for a Windows desktop programmer? I look forward to hearing from you!
modified 10-Mar-14 14:15pm.
|
|
|
|
|
Introduced in 1999, Web 2.0 was a set of new features, namely dynamic vs. static pages.
For me, as a user, it was the time when people started providing content. There are two main problems with this approach which I experienced while being a member of Facebook, or reading comments under books of Amazon.com.
1. Inaccurate, sometimes completely wrong and very harmful data:
Everybody talks, mainly based on their ideas, and ideas are often result of over generalization of past experiences in our own lives or other reliable or unreliable sources.
Just recently I began a small research in my own profession, programming and noticed many issues in Wikipedia articles, in comparison to reliable sources.
Just read reviews underneath Amazon books, I find some reviews that belong to a completely different book, or reviews that seem to be written after spending 10 minutes with a book.
2. People work for free for Web 2.0!
After I left addiction to Facebook, I noticed that I was wasting invaluable hours of life doing something that wasn't actually worth it! I don't know how many people will give up, stop and think about how they are living their lives but if the number increases, Web 2.0 will die eventually.
A question
A good question to ask would be, is it worth spending so much time, producing a content that many times isn't worth and sometimes are even harmful?! A side effect of this move is that the Internet is filled with huge volume of useless content that even separating it from useful ones is becoming an issue and many apps are being written to automatically sensor useless data!
To have a successful future, I believe data shall become reliable.
A suggestion
I believe it is best that only experts produce data, but on the other hand, freedom of speech shall be preserved. So I was thinking that maybe in the future, applications can produce metadata around users data. Metadata that will help readers to weigh value of the published data they face everyday. Metadata that is gathered as part of daily lives of users. Data in this scenario isn't solely result of a users work, but a result of a service given to a user, during which users opinion and monitored actions data are gathered.
For instance, imagine a book store website that only allows comments via an e-book reader application. Very restricting, but one can say, comments on this website must be much more reliable. (Quantity vs. quality)
An e-reader application that will monitor readers actions (with permission of course) and when a reader asks to delete a book, asks why? This app, keeps track of books a reader has read and can be viewed by the user as a database to refer to, next time he wants to pick up a book from same author for instance(giving service to user), but also, it can ask user to share her/his experience (producing content).
This experience becomes a review of the book and also metadatas like:
* How many hours this reviewer spent with the book?
* How many pages she/he read?
* How many minutes she/he spent on each page?
* What is the total number of books this user has read and on which subjects?
* etc.
It can be completely anonymous, by omitting real readers identity, and at the same time creating useful quality content to guide future buyers of the product (book in this example)
I believe if the service of the application is good enough, users will install it voluntarily, just as many users are now installing Android apps that ask permission to access a lot of private stuff.
Just an idea, in a holiday!
|
|
|
|
|
My WiFi router died a few days ago, before I buy a new one, I needed internet on my android phone, there seemed to be a solution, Microsoft Virtual WiFi; unreliable online information indicate that some Wireless LAN interface manufacturers have added a feature to their boards that allow the normally receiver board act as a transmitters too. Sounds interesting! Let's try it!
There's like a million blog entries and tens of applications on how to create and run it.
In short:
Run these commands as administrator:
netsh wlan set hostednetwork mode=allow ssid="WiFiName" key="WiFiPassword" keyUsage=persistent
netsh wlan start hostednetwork
Note: I actually had to go to Device Manager, refresh list of Network adapters and enable 'Microsoft Hosted Network Virtual Adapter' before these commands could work correctly.
and then share my pc internet with the newly added virtual adapter (LAN adapter Properties>Sharing>VirtualWiFi).
After I went through all the steps, I faced another problem:
Android device could see the new Wireless network, but couldn't get an ip from it. 'ip config /all' reported DHCP to be disabled on my VirtualWiFi adapter. Why? I have no idea, after all network isn't my specialty. I decided to go the easy way of assigning IPs manually.
At first it seemed impossible in Android ICS! After half a day I figured, it is possible!
- First, on my LG phone, it can only be assigned upon first connection to a WiFi.
- Second, even though 'Static IP' fields are grayed out and already filled with some numbers that can't be deleted, it's just an android GUI bad decision, I accidentally typed a new set of digits, it worked!! It wasn't disabled! I believed it's disabled so hard that I didn't even try to enter digits. Kinda frightening how I live based on prior assumptions though!
So here's my static IP assignments:
DSL Router (DHCP but I actually am not using it anymore!):
192.168.1.1
Lan Internet:
IPV4:192.168.1.2
Subnet:255.255.255.0
Gateway:192.168.1.1
DNS:8.8.8.8
My Virtual WiFi adapter:
192.168.137.1
255.255.255.0
NO DEFAULT GATEWAY
My Android device:
192.168.137.10
255.255.255.0
192.168.137.1
Planning to move to Germany, looking for a job there!Looking for a Windows desktop programmer? I look forward to hearing from you!
|
|
|
|
|
Nearly a decade ago I became a member of this website! Back then, a young man with crazy dreams, many of which are fulfilled!!
After graduation, I worked hard, creating as many apps as possible. Most of them were for others and the money spent on food. I didn't pursue game development, but I learned C#, ASP.Net MVC, WinAVR and firmware programming, a little bit JavaScript, WCF and WPF. I'll not learn F# unless I have to. I might learn Java (Yes, for Android!) and I'll definitely play more with Entity framework.
In a few days, I'll be 32. I can say, in past ten years I learned more about our world and life than about programming. I wish I knew all the things that I know now, back then, when I started my journey as a programmer. If I marry one day and have kids, I'll teach them these lessons. They'll call me a boring dad I guess!!
Time goes real fast and life is hard. This year I decided that it's time for change. I started working mostly on improving my skills again. I (FINALLY!!) read GOF book on patterns completely, I finished HeadFirst design patterns book too, read some parts of the GitPro book to learn its command line better and now I'm reading Martin Fowlers' book; 'Patterns of enterprise application architecture', YES I'm going to be a better Object Oriented designer!
Three crazy dreams remained unfulfilled, most important of them, to live in a free country. I prepared for it, I'm almost ready! A few more steps remaining...
|
|
|
|
|
"I have to learn all the time, when should I use what I learned?" Maybe that was the logic my brain created in order to accept the sad fact that I don't find enough time to learn new things.
I have always been playing with c#, but a few months ago I decided to take it serious and learn more whenever I find some free time. I was not familiar with .Net 1.x and I decided to start with version 2.0. At the same time I saw that many Sacha Barber articles about WPF are winners of the CodeProject competitions. It was all about .Net 3.0. I decided to play with version 3 as well and yesterday I did and was afraid a bit.
I noticed that From version 1.0 to 2.0 to 3.0 and now 3.5 a lot of changes are happening and I'm already far from technology even with learning how to code in .Net 2.0. Now I know why it's taking so long for Microsoft to release VS 2008. At the same time, I know many talented programmers that are still using MFC like what I was doing even here at CodeProject.
But what's going on?
Why this much changes? Because it's happening. I was wrong. Many many applications are going to go online. Articles like this[^] show us that probably sooner or later most of todays' desktop applications will move to the net and that's why Microsoft is trying so much. They don't want to loose us!
They know
They very well know that in a near feature maybe in 5-10 years Internet will be fast enough and servers strong enough to be able to access websites with almost the same speed we access our local applications and cheap enough that it will be available to almost everyone. In such a day everything will go online and maybe someone logically thinks: "All I need to access my favorite, mostly free, softwares is a browser. If that's all I need what's the difference between Windows and Linux? probably their browsers! Yes it's browsers war now. It's no longer OS war." Yes to run a browser we need an OS but why should I pay for Windows, when free Ubuntu linux runs almost the same FireFox that I'm running in Windows?
What about us?
This is an alert to me as a programmer. Maybe the only reason I'm using windows today is that I have to do my daily application programming for Windows. Well, I'm already outdated, expired! I have to think more about going online. Tommorow's time for rich internet applications.
What about Microsoft?
They have been ruling desktop for years because there was not a good competitor for their OS first. After a while the only reason I can name for their existence was softwares that programmers created for them. A large set of softwares for almost any task. But in the web world they're not leaders. They got several big competitors that are far better right now. Most of the web servers don't use Windows as long as I know. How can they win?
Ray Ozzie is genius!
He found out to win this new world Microsoft cannot fight alone. Maybe that's why Ballmer loves developers so much. There's one way to win. Play with many developers in your team. Create best tools for writing online applications. Each ASP.Net website that goes online makes it more possible to sell a copy of a Windows(Server version), SQL Server and all other server related stuff.
The question is answered
They're creating these new technologies, because they have to. They must have something to compete with Php, Linux, Mysql, Appache campaign to be able to stay in the market. They must gather enough troops(Programmers) all armed to fight with Google. Maybe that's why they were so much interested in acquiring Yahoo.
"In the end it's a little boy expressing himself." Yanni
|
|
|
|
|
Hamed Mosavi wrote: Microsofts' new waves of technologies, why?
Just for catching more money.
|
|
|
|
|
"In the end it's a little boy expressing himself." Yanni
|
|
|
|
|
Hi Hamed,
Nice article. You are right about most of the stuff the MS doing. Drop me a line when you are free we would could work out something works for both of us. My email address gprasad@srustimobile.com.
PS: Use linked-in (www.linkedin.com) to connect with like minded professionals. You never know what opertunities comes along whne you least suspected.
All the best,
Guru Prasad
|
|
|
|
|
Thanks.
I just replied via email.
"I hope you live a life you're proud of. If you find that you're not, I hope you have the strength to start all over again." - I wish I knew who is this quote from
|
|
|
|
|
Hi Hamed,
that's great article and useful for me.I hope you help me more later in my project.
|
|
|
|
|
shima sabbagh wrote: that's great article and useful for me.
Thanks. Glad you like it.
shima sabbagh wrote: I hope you help me more later in my project.
I can't remember if I ever helped, maybe my articles did. Anyway I'll be happy to help as long as and as much as I can.
Good luck with your projects. "I hope you live a life you're proud of. If you find that you're not, I hope you have the strength to start all over again." - I wish I knew who is this quote from
|
|
|
|
|
سلام
اقا حامد ببخشید شما کد وریلاگ answering machine رو دارین؟
|
|
|
|
|
age be emailam javab bedin fek koonam behtar bashe
bazam mamnoon
habib1024@gmail.com
|
|
|
|
|
I found some smilies in other posts, that I was not able to see them on smilies[^] page. Already you could find codes relating to each smiley here, but I decided to keep them secret either. Only smart people will see them
Icon | Code (Don't miss colons) | | love | | jig | | bob | | beer | | java | | vegemite | | eek | | baaaa! | | badger |
// "In the end it's a little boy expressing himself." Yanni while (I'm_alive) { cout<<"I love programming."; }
modified on Tuesday, August 12, 2008 4:25 AM
|
|
|
|
|
Just wanted to say that it is better that we find something new and interesting In yahoo also there are some smilies that is not in smilies page like a cup of coffee. but many people use them .
Yes U Can ...If U Can ,Dream it , U can do it ...ICAN
|
|
|
|
|
Shilpi Boosar wrote: explore?
I can't understand your meaning. Anyone can explore and see these smilies.
Aha! Understood. Yes maybe it's better for members to find these themselves. I use this as a reference for myself. I forget the code and come here to find it.
Maybe if it was something users earn, it was better. For example Gold members see some in normal smilies bar when posting a message, while normal cannot, or Fixture users may see something else's over normal smilies that everyone can see.
By the way, do you know the code for the Sheep?
// "In the end it's a little boy expressing himself." Yanni
while (I_am_alive) { cout<<"I love to do more than just programming."; }
modified on Saturday, June 7, 2008 4:59 AM
|
|
|
|
|
Hmm
By the way, do you know the code for the Sheep? ?????
Sheep ???
Yes U Can ...If U Can ,Dream it , U can do it ...ICAN
|
|
|
|
|
Yes! I spotted a small ship[^] in some messages, but none of the following words displays it:
sheep, hogget, lamb, ewe, goat, ram, wether, flock, mob, herd.
// "In the end it's a little boy expressing himself." Yanni
while (I_am_alive) { cout<<"I love to do more than just programming."; }
modified on Saturday, June 7, 2008 6:00 AM
|
|
|
|
|
If it is in code project than i dont see any sheep icon just send me a link,where the sheep icon is.but in yahoo if u see than copy that icon and paste it than it give you the symbol.
Yes U Can ...If U Can ,Dream it , U can do it ...ICAN
|
|
|
|
|
You read it too soon! I modified my last message and added the link[^].
// "In the end it's a little boy expressing himself." Yanni
while (I_am_alive) { cout<<"I love to do more than just programming."; }
|
|
|
|
|
Yes i also try but not find any result. May i ask you one question is it not related to icon
http://www.sarvsoft.com/[^]
Is it a software concern working on urdu laguage
Yes U Can ...If U Can ,Dream it , U can do it ...ICAN
|
|
|
|
|
Shilpi Boosar wrote: s it a software concern working on urdu laguage
It's not Urdu, but Persian(Farsi) language. I wanted to add an English language several times, but I thought it's useless, since I cannot sell any products outside Iran, at the time being, due to sanctions.
I am trying to introduce and sell a few of the softwares that I already wrote using that site. I also use it as an online storage to upload some of my stuffs. The product I'm talking about on the home page will be available next week, after CD's are burned. This is my first experience of selling a product this way. I'm mostly a contract person and never published anything in large number.
// "In the end it's a little boy expressing himself." Yanni
while (I_am_alive) { cout<<"I love to do more than just programming."; }
|
|
|
|
|