My task for today is to fully understand event-driven programming and how it works. Now there are several ways this can be achieved. The first one is to actually program a basic program that covers the key concepts, and the second approach is to watch a video that explains the key concepts in a way I can understand. Which approach do people recommend?
Does anyone have videos/program demos they found useful and could recommend to me? My major experiences are with ASP.NET MVC, so it would be best if the tutorial were with WebForms ASP.NET.
Event-based programming
Related
So I'm new to node.js, javascript frameworks, and meteor.com. I'm trying to learn how to build social networks, and I'm naive/struggling to understand why Meteor.js (meteor.com) wouldn't be able to do all the great things you see now that twitter, facebook, instagram are doing?
There's the comet technology between client/server, authentication configs, asynchronous coding for scaling and performance, and built on top of node.js.
I'm trying to learn more about long polling, comet, gridFS or how files are stored, and in general things like replication sets, and sharding to help with performance (esp since Redhat has this openshift platform that we can build our own private clouds with).
I have some computer science background, but it seems like magic, so what am I missing? If you all could think of a few buzz words that make a social network tick that Meteor.js doesn't support, what would it be?
I hear things about parallel and concurrency (webworkers fixes that in part, no?), websockets, that high level languages like python or java are better off supporting. There's only one to learn my answers, and thats by doing, but thought someone could sway me one way or the other via this thread. Thanks!
This question encompasses a really broad idea and just focusing on using meteor alone would solve this issue. Here are a few points to consider:
I don't think this framework would be a good starting point to learn long-polling, gridFS, etc etc. Meteor aims to be a framework that tends to be more of an ecosystem of packages e.g. you can certainly roll your own aformentioned strategies -- however for dynamic updates, Meteor uses its own Data Delivery Protocol (DDP) supported/implemented by (surprise) a good bunch of core packages such as Spark.
Parallel processing and concurrency can be better off done using other languages, but why not with? Since Meteor is largely based on node.js, and node.js is really good with the aforementioned stuff plus it can play very well with other languages so you could integrate smoothly. Meteor doesn't really require you purely rely on it, as other languages would say the same thing. It's all in the general engineering / planning for your project. There are already lots of really good stuff out there that rely on Meteor, join in! don't be afraid. It all boils down to planning (and the courage/perseverance to pull it off, of course).
Right now, we cannot tell if Meteor would be incapable of the usual great stuff by gigantic websites. Sure, we can do live updates, (its own kind of) publish/subscribe patterns, and powerful stuff to boost development (look at the seven core concepts of meteor to best understand this). It is not impossible to replicate what is already out there, really. We can only say it with uncertainty at the moment mainly because.. (see next point)
The framework is so young! it's still at 0.6.x at the time of writing. Please take time to look at the Meteor Roadmap to see how things are going in terms of broader support for persistence/databases, performance considerations, and the official DDP specification.
I hope I have answered your enquiry (and more, I hope). I'm really excited for meteor myself as it could easily be the next big thing. We have a couple of (for-)production projects using Meteor as well, so you're getting direct insight from a person who has done quite a bit of hacking (and tons of research and first-hand experience) in Meteor. Not that i'm saying i'm an expert or so, it's just so much fun to work with Meteor and i'm totally not kidding you.
Hope this helps!
P.S.: Fair warning though, resources and documentation is really sparse at this point. I try to contribute to the community as much as I can about it (one of my starting points is here, on SO).
I was reading these days about large projects implementation in python and Flex, and very often people praise the use of framework (like Cairngorm, PureMVC or others) over traditional OOP coding.
I think i dont really understand the advantage of using FW, which is the strong point over classic programming? how big should be the project in order to use FW? it is intended mainly for web-applications? or can be used for desktop apps as well?
hope, all these doubts dont sound stupid to you, i am not Computer engineer, just electronic, so my knowledge of sw architecture is very limited.
Br
Using a framework is not really any different from classic OOP programming.
When you write projects in a similar environment, you will probably see yourself writing a framework (or a set of tools) over and over again.
A framework is really just code reuse - instead of you writing the logic for managing a common task, someone else (or you) has written it already for you to use in your project.
A well designed framework will keep you focused on your task, rather than spending time solving problems that has been solved already.
I would add my 2 cents here, using a framework will also help a better organized collaborative environment too. Your team mates will get to know about the code easily if you are following a standard framework.
In enterprise applications using framework helps meeting the deadline and better code quiality.
I am developing applications for 9 years now - meanly Java. Now am asked to participate in the SVT team for the next release. Overall this means installing complex system setups and running specific user scenarios on these setups as well as doing long runs and load runs.
Overall I am positive about it as I will learn something new. But I am also affraid to loose some grip and knowledge with programming, because of not doing it a lot then.
I know doing programming in side projects such as helping with open source projects will be one alternative, but finding the time on top of a familiy life and a fulltime jop is not that easy.
What do you think, is doing concrete testing work helping getting a better software engineer?
Thanks in advance,
Michael
Testing isn't asside of programming.
You can still program automated systems so you can have recursion testing. From unit tests to real complex automated systems, the best i know is selenium which generates code you can use to build testing scripts in most languages.
There are other tools for non webapps. But I personaly believe that testing is a bit far away from "stoping coding. Unless you're just doing user point-of-view testing.
You can also do error injections which will make you write small singletons to inject them in the memory of your application.
So you can code while testing ;) and learn new stuff also.
Having been in a testing team i think it really helps, because you'll learn to exploit code easily, which will reflect when you build your own API or App at a later date.
I would say it depends on your skill and temparament. Programming knowledge will serve you well while testing. At the same time, I know that it needs a different approach and mindset and is on a completely different career track. You can always keep up your programming skills by writing code for a project you like (even if you have to make one up).
Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
Questions asking us to recommend or find a tool, library or favorite off-site resource are off-topic for Stack Overflow as they tend to attract opinionated answers and spam. Instead, describe the problem and what has been done so far to solve it.
Closed 9 years ago.
Improve this question
Having not done ASP.NET since v1.1, and now blitzing through the Wrox Pro ASP.NET v3.5 book, what other resources are available to get me developing enterprise ASP.NET apps the fastest?
I've been developing in DotNet since Beta and have been doing Winform & middle-layer architecture/design/dev for 3.5 years now (as this has been my client's desires). But I'm finding my falling behind has hurt me concerning a new client. :(
I'd appreciate any advice on moving forward as fast as possible. I'm looking for anything RAD related or even just great books on the subject that you recommend. Right now, I'm having fun consuming the Wrox book though. Thanx much!
I'd start with the QuickStart tutorials. That'll get you into the code, get you some exposure to the programming, architecture, controls, data access, and so on. You can also watch videos of how to accomplish various tasks in ASP.NET at the ASP.NET web site.
Assuming you already have substantial VB.NET or C# experience, you should get deep into ASP.NET fairly quickly.
Take a look to the ASP.NET Dynamic Data Scaffolding Framework (included in the .NET Framework 3.5 SP1), it allows you to build really quickly data driven web applications. Here you can find more good videos and resources about this RAD feature.
Not that easy, since "enterprise" is a word that can encompass lots of things. First off, I would suggest just getting to know which new frameworks are available, both out-of-the-box and not. And there's been a lot of those since .NET 1.1.
WCF, for example. Dynamic Data, as mentioned in another comment. ASP.NET MVC. LINQ, ADO.NET EF, WF.
I'm not suggesting you learn all of them, at least not all at once. Rather, be at least familiar with what they are and what they bring to the table. Browse through the base class library reference and familiarize yourself with the available namespaces. This will help you know what's there and what you will have to write. Try your hand at the bits that interest you.
After you're a bit more well-versed with the .NET framework, it's time to take a look at the other stuff you'll need for enterprise development. Frameworks such as CSLA and NHibernate. Testing stuff like TypeMock. As before just knowing what's out there, even without knowing the details, can help quite a lot.
Write code. Nothing quite like writing code if you want to learn quickly. Choose one of the apps you wrote back in the 1.1 days, and try to write a shorter, cleaner and/or more maintainable version with the new tools at your disposal.
And don't forget to have fun. If you're not enjoying what you're doing, you won't really be learning much. Good luck!
You probably shouldn't mix "enterprise" with "rad" as the two generally have extreme connotations on opposite ends of the spectrum.
Enterprise typically draws up ideas of, large, line-of-business applications, large complexity, large configuration, (and some would probably relate to pain, nightmares, etc..)
RAD typically refers to the drag & drop garbage that you see in awesome conference demos, but then you go back home and try to build and maintain and app built with dragging and dropping controls & data acccess components on your UI and you quickly see that it breaks down.
Pick a good balance of tools & techniques that make you productive, but at the same time don't sacrifice maintainability.
You'll find no shortage of opinions of "how you should work" here on Stack Overflow, but the best advice I can give you is to be pragmatic, read as much as you can stand, and code-code-code. I code on the bus, at home, at work, on a plane, in a hotel room, etc. Try out different tools/frameworks, see what their communities say, try building a simple todo-list app, etc. Get your feel for what's out there.
You're on the right path by reaching out to the community.
After reading a bit more about how Gnutella and other P2P networks function, I wanted to start my own peer-to-peer system. I went in thinking that I would find plenty of tutorials and language-agnostic guidelines which could be applied, however I was met with a vague simplistic overview.
I could only find very small, precise P2P code which didn't do much more than use client/server architecture on all users, which wasn't really what I was looking for. I wanted something like Gnutella, but there doesn't seem to be any articles out in the open for joining the network.
RFC 4981, with its huge bibliography, could be a very good starting point.
I had to write a basic Gnutella client in C# using Web Services and I think the class notes on the P2P stuff are still available here and here.
You might have better success researching Bittorrent, I believe that the creator has written some papers, and it seems others are as well.
BitTyrant
Bittorent.org, see the developers section
I don't know what platform you are trying to use, but here is a decent article on the subject for .NET.
I've found the TheoryOrg Unofficial BitTorrent Specification to be the best online source for Bittorrent information. Also, the Monotorrent code is fairly simple and easy to understand. There's also a project called "GCT" which implements JGroups style P2P for LAN/Multicast environments, and its code is similarly easy to understand (if a bit buggy).
You can try to read Gnutella2 and try to implement messaging. For reading conceptual material you can read Distributed Systems by Andrew Tannenbaum.
You can have a look at JXTA. It's intention was to be a generic, platform agnostic p2p framework, in contrast to other p2p implementations which are usually for a very specific purpose (such as Gnutella).
Don't be fooled by it's Java appearance, there are binding available for C/C++/C#, but the core protocols are implemented in XML which should translate to any language.
You can also download a free book here.