This week's book giveaway is in the HTML Pages with CSS and JavaScript forum.
We're giving away four copies of Testing JavaScript Applications and have Lucas da Costa on-line!
See this thread for details.
Win a copy of Testing JavaScript Applications this week in the HTML Pages with CSS and JavaScript forum!

Michael Yuan

author
+ Follow
since Mar 07, 2002
Michael likes ...
Python TypeScript Java
Dr. Michael Yuan is the author of 5 books on software engineering. His latest book Building Blockchain Apps was published by Addison-Wesley in Dec 2019. He is also the CEO of Second State, a company that focuses on bringing WebAssembly and Rust technologies to cloud, blockchain, and AI applications. Prior to Second State, Dr. Yuan was a long time open source contributor at Red Hat, JBoss, and Mozilla. Outside of software, Dr. Yuan is a Principal Investigator at the National Institutes of Health, with multiple research awards on cancer and public health research. He holds a PhD in astrophysics from the University of Texas at Austin.
Austin, Texas, USA
Cows and Likes
Cows
Total received
5
In last 30 days
0
Total given
0
Likes
Total received
1
Received in last 30 days
0
Total given
4
Given in last 30 days
0
Forums and Threads
Scavenger Hunt
expand Rancher Scavenger Hunt
expand Ranch Hand Scavenger Hunt
expand Greenhorn Scavenger Hunt

Recent posts by Michael Yuan

Congratulations everyone!
4 months ago
I would say that blockchain is software. It is like a database or application server. You use it as part of the your software services. There are many use cases. Bitcoin and cryptocurrencies are big ones. But in general, it is a decentralized alternative to database and application servers. It is decentralized (no one can shut it down, no one can cheat) at the cost of efficiency.
4 months ago
Yes, the biggest barrier for Dapps (or decentralized apps) is the requirement for users to sign every transaction with a private key. Most users just want to use username / password, and do not wish to do the chores of private key management. That is why most dapps you see today are "money" related -- investment, gambling etc. There are really two ways to mitigate this. We discussed both options at length in the book. https://www.buildingblockchainapps.com/

1. Build key management into your client. That is, to provide a "wallet" in your web app or mobile app and help the user access the key transparently once they login.

2. Automatically generate keys for public apps. This approach is essentially what you see when you create and publish a Dapp from the BUIDL IDE tool:

http://buidl.secondstate.io/

To see a full example of "disposable private keys for public Dapps", check out this tutorial:

https://blog.secondstate.io/post/20191002-book-etc-en/
4 months ago
When we talk about blockchain apps, we talk about web apps that use blockchain as the backend. Blockchain provides an alternative to database and app servers. Why do we do that? That is because any database (e.g., MySQL) or app server (e.g., Node) can be shutdown or changed without notice. You can not change the data or code on blockchains without a record.

* Blockchain itself provides a ledger and can store data -- hence an alternative to databases
* Blockchain smart contracts can execute code logic -- hence an alternative to app servers

To answer your question about Bitcoin, the Bitcoin blockchain is designed to handle coin transactions not arbitrary logic. There is a scripting language for Bitcoin, but few people use it. Ethereum is designed with a Turing complete virtual machine at the center -- so it is much more like a generic "computer".

The new generation of Ethereum uses WebAssembly as its runtime. I believe that is a big step toward a much more mainstream application server environment on blockchains.
4 months ago
Thank you so much Jeanne!
4 months ago
Security is actually a very strong point of Seam. Seam has its own security framework that does much more than most other web app security frameworks. It provides permission-based, and role-based access controls at the object level.

I am not sure how the OS native SSO works -- does the browser pass through some kind of security token to the web app? Can you just make the browser remember the username / password and auto-login?
11 years ago
All the book examples are built with Maven. And I think Seam itself is built with Maven now as well. For Maven based hot deployment, you might have to write a special maven plugin that knows which files to copy to the app server ... You are very welcome to contribute this to the Seam project.
11 years ago
Conversation is like a web wizard. It is a series of web pages inside a http session. It is smaller than a http session. It is especially useful in multiple browser tabs, where all tabs belongs to the same http session.

Process scope lives longer than the http session. It is a business process saved in the database. So, it can survive server reboots. And it can have multiple actors each having its own http session.
11 years ago
What is the spring counterpart are you referring to? Seam-gen is an application generator that generates a skeleton web app that uses Seam ...
11 years ago
I might be wrong -- but I do not think Seam supports DWR. BUT, Seam Remoting is very similar to DWR. So, if you are coming from DWR background, you will find Seam Remoting a natural choice for AJAX.
11 years ago
MDB is "EJB", which a lot of people do not like. ;) Seam's JMS support allows you to hook up JMS into POJOs.
11 years ago
Actually, I use NetBeans to do most of the dev work. The sample projects in the book are setup as maven projects. You just need to open those projects in NetBeans (with Maven plugin), and you can start directly from there by modifying classes / templates in the sample projects.
11 years ago
In theory, you can "de-couple" everything into infinite number of layers -- it just a matter of how much de-coupling you actually NEED. If you really need to de-couple the JSF actions from EJB services, you can easily do that with Seam: Just make a POJO component that acts as JSF event handlers and make it invoke other service objects in the backend.
11 years ago
Invoke web services from beans is simple -- just make a HTTP call? ;) The more complicated task is to expose bean methods as web services. Seam's EJB3 components have the standard EJB WebServices annotation support (in fact, this is how the Seam Remoting does AJAX). Seam also integrates with RESTEasy to support RESTful web services.
11 years ago
I do not think it does currently ... There maybe experimental work out there. But Seam is mostly used with JSF, Wicket, and Tapestry at this moment.
11 years ago