I'm Writing A Book Called 'Smart Meteor' what should be in it?


#1

I’m writing a book called ‘Smart Meteor’, walking users through the process of creating a Meteor application ready for production from start to finish. I want to know what you would like to see in it, here’s what I have so far:

There are plenty of guides out there that teach Meteor development, but none that teach the real world process of actually creating an app from start to finish and getting it ready for the challenges of production. There is so much more to app creation, from planning the layout and flow of the app, to choosing a great front end framework, branding the application, integrating the best packages to make development easier end more efficient, polishing your application to make it beautiful and fun to use, testing your application, deploying the app to a production ready server, and monitoring and improving the app’s performance. Here’s what I want to put in the guide. I am really curious to hear what you all think and what you’d like to see!

  • Planning and Wireframing: Planning out a web application can be one of the most difficult parts of development, this is multiplied with a framework like Meteor, where you have a lot of freedom to design and structure your app the way you want. In addition to this, the old Spider-Man alive of “With great power comes great responsibility” applies to Meteor. There is a lot of potential to get into a huge mess while creating Meteor applications, because of how it functions. And it is necessary to implement sound, maintainable app design/structure to keep your Meteor app under control and performing well.
  • Using Flow Router: Flow Router is an alternative to Iron Router that has a lot of advantages. In the book, we’ll walk through exactly how to set up and use Flow Router in your app, including animations, authentication, and more.
  • Customizing Bootstrap: I don’t know about you, but it seems to me like all Meteor apps have a certain look to them. I’m not sure why this happens, but an essential aspect of developing an application for the real world is branding and customizing it so it is unique. We’ll go over how to customize the Bootstrap framework to make your application your own, and stand out from every other app out there.
  • Using Awesome Packages: One of the coolest parts about Meteor is the community, namely all of the amazing packages they create. We’ll cover which packages can drastically improve you application and development workflow, and how best to implement them.
  • Animations and Application Polish: One of the potential downsides of reactive, real time apps is that they can be clunky and jerky without proper transitions and animations. We’ll work through adding animations and transitions to our app to make it smooth and a joy to use.
  • Testing: Testing in a Meteor application is really important. The nature of Meteor being reactive and real time means there is a lot of opportunity for stuff to go wrong, and it can make it really hard to figure out what’s going wrong. Testing can help alleviate some of those issues.
  • Making Developing and Deploying to different environments easy with environment variables
  • Deploying: A lot of deployment options exist for Meteor, we’ll be going over the best options in regards to performance and security.
  • Security: Security is a very important but often overlooked aspect of not just Meteor development, but web development in general. This section will walk you through how to secure and harden your Meteor app.
  • Performance Monitoring: Once you’ve finished developing your application, your work is not done. When your app is in production, performance monitoring and bug tracking are essential to maintaining a great app. This section will cover important procedures and techniques for ensuring that your app is constantly running in peak condition.
  • Tracking and Analytics with Keen.io: Tracking and analytics are crucial to identifying how users are interacting with your application. In this section, we’ll go over how to integrate and use Keen.io, and analytics platform, with your Meteor app. Smart Meteor is designed to do one thing. Teach developers how to efficiently build exceptional Meteor applications that are ready to hold up in the real world. After going through this guide, you’ll be ready to confidently start building Meteor applications for clients or go out and build a startup.

So that’s what I have so far, I’m really really curious to hear what you all think and if there is anything else you’d like to see in the guide. One major decision I’m still looking at is whether to use Blaze or React in the guide.


#2

Anyone of those could be a book tbh. Some are, i guess :wink: Two thoughts offered as Meteor adopter whose bought most of the products out there (but I may well not be representative of your audience).

  1. Consider MVP’ approach - narrow the book’s scope to begin with. Write a very short ebook/guide that provides a valuable quick win to the reader on the biggest pain point, then build out from there.

  2. Meteor content
    $ Planning and Wireframing - Planning good if covers use cases - web apps, microservices; wireframing is another world of pain, no?
    $ Using Flow Router - routing options wd be useful. Reminds me that DM/Evented mind are showing their age.
    $ Customizing Bootstrap - not Meteor specific. Anyone going beyond prototype will pull in design talent, surely?
    $ Using Awesome Packages: market gap and value here, app design & routing, guide to top package choices…
    $ Animations and Application Polish - premature optimization, really :smile:
    $ Testing: is covered, no?
    $ Making Developing and Deploying: I think Meteortips is covering this also?
    $ Security, Performance Monitoring, Tracking and Analytics - Galaxy will change much. DevOps also somehing of a moving target…but for a small app I guess this comes down to packages too (?) - Kadira/GA etc…

I know React gets a lot of love here, but Id consider writing fro an angular audoence - if only for market size and where people might migrate from with their skills…

Final pennies worth: Market immediately: put up a landing page, run a small FB/Google ad campaign (wherever your audience might be), with pre-order for the MVP book. Use email automation and maybe retarget (depending on results). Follow up with promos on Medium/HN/Crater…hope it helps


#3

So I mostly agree with pal but my two cents:

  1. Don’t include wireframing. That is an entirely different concept and while wireframing in meteor can be helpful and quick, it is NOT really the scope I would think of a book on meteor. A separate book on web design techniques would I think be a more appropriate place to put that as well as…
  2. Customizing bootstrap. I’ll be honest, if you don’t know how to customize bootstrap please for the love of all that is good and holy in this world do not start developing web applications. Go learn that first. Again, I would say out of the scope of this book.
  3. Flow Router - Intrdouce several options, including no router (not required you know). I have written meteor apps that used no router as well as iron:router. I look forward to using flow router on my next application, but iron:router is still the right answer for some (few, but some) people.
  4. Environment variables - really part of planning your application right? Many large frameworks have a properties concept built right in where you have different “profiles” and you enable different options for each profile. I myself have gone this approach with meteor and found it very helpful, but this is part of the application planning as trying to tack that on after the fact is hard.
  5. Security - Yes please! But please make sure you cover security from multiple angles and express that it is a process not just a thing you do once. Please stress all of the following:
  6. Application template security
  7. Application data security
  8. Server security (hardening the application server)
  9. Transmission security (is HTTPS/WSS necessary? How does one implement it)
  10. Update security. It’s never complete, things evolve and technologies become stronger.
  11. Performance Monitoring - Maybe also include a section of performance gotchas. One thing that seems to be generally lacking in the meteor community is a continuously updating reference to the current major performance costs. After learning a couple of those bottlenecks (some with the help of this forum) I recently fixed an in-production app which was occasionally running out of CPU on a 4 core system to run at less than 10% of a single core. The load on the site didn’t change, but I was doing a few simple things that are big no-nos currently in meteor.
  12. Componentizing templates. Discuss the pros and cons of micro-templates that provide very simple pieces of the application structure.

#4

Thanks a ton that’s hugely helpful :smile: one pain point I’ve seen is the lack of resources on building mobile apps using meteor and meteoric. That’s another book I’ve been thinking about writing, which I think is more in line with the specifically targeted, MVP book


#5

Thanks a ton that’s super helpful! It sounds like security would be your biggest interest out of the topics listed. Based on feedback here and my own research, I’m leaning towards a smaller, more focused book on one topic.


#6

If you are going to pick just one topic I would suggest either performance or security. From my experience of the community so far those are the least discussed aspects. I don’t often hear about applications for example which are dealing with large amounts of sensitive data or have run into performance problems.

I have dealt with both of those myself and as I said, I find those two areas pretty lacking in the community.

I have a separate post on here about performance issues that I’ve learned about, on my employer’s dime, while trying to keep an ecommerce offering running. Yeah, that is a fun one, owner calls “why is the site running slow today” “Oh don’t worry, we have a traffic peak but we’re monitoring it.” It took us a couple of months to work out all of the performance kinks and I learned a lot of important things along the way. For example: only having one thread means if something gets stuck in an infinite loop (or near infinite in my case) then your site goes down. God have mercy on you if that is instead of a loop an infinite (or near infinite) recursion.


#7
  • I think a big thing to go over is packages, and how to organize local code into packages instead of having a ton of folders in your client/server.
  • It’s easy to get template-tangled. I think properly using templates is important, and how this relates to creating packages.
  • How to keep data out of routes.
  • For larger apps, not caching subscription data or paginating usually isn’t a viable option (dep. on the kind of app).
  • Two months ago, I couldn’t find many subs caching / paginating libraries. Dunno the status atm. I think this heavily depends on data so maybe it might make sense to take a couple kinds of apps and see what would be the best way to truncate and cache the data on the client.

I think there are a lot of practices which are ok for a 100 line app. But as soon as your app grows by another order of magnitude, it’s easy to end up with angel hair, heat, water, and Prego mixed in a bowl. Which I ended up with and had to refactor, but it’s rotini at best…

Edit: I agree with previous posters, I think throttling and preventing DDOS is important, also knowing what data to project…


#8

This sounds great. Thanks for asking for recommendations from the community.

I just began working with Meteor a couple of weeks ago and have only just scratched the surface of the API. So I am very happy with Discover Meteor. It’s an extraordinarily well-written and thorough book.

So it’s no criticism to point out that, naturally, as you advance in your skills in anything, your books should go more in-depth (try telling my Calculus II professor otherwise). I think it’s awesome that you’re planning to explain things on a deeper level, closer to what you might expect to do when building a production app. Sometimes it’s hard to bridge the knowledge gap from the introductory material to knowing how to build stuff people are happy to pay for with a given tool.

Bootstrap customization would be great. But how about taking it a step further and at least touching on some of the other frameworks that have Atmosphere packages (well, that might be a lot - maybe the most popular ones). I’d love to see working examples of real-world, or at least very close to real-world apps using Semantic-UI, UIkit, and the CSS components from Ionic.

Maybe also Reapp.io? It seems relatively new, but I’m not sure. Looks nice though.

Lastly, I don’t know how many people use these in Meteor, but maybe the book could explore some of the options for Model and/or ORM packages.

Thanks