What is the best process for designing a non commercial Website?

I am about to redesign a website about threatend animals for a governmental client. This website is very much text-based. I am wondering how to approach the design process, as I don’t have any information about the user (non commercial site, no information given, site is supposed to adress “everyone”) Maybe someone of you already did projects in the non-profit /governmental sector and has some advice.

Thanks a lot! Konstanze

Designing a Feed and Notification system in MongoDB

I’m developing a NodeJS API that will be consumed, for now, by an Android app.

I need 2 important things here: a News Feed and a Notification system. And I need it to be scalable.

I’m using MongoDB with Express for this project.

Notification System

About the notification system I’m thinking about a document that would hold:

  • actor: id refering to an User object
  • verb: a String defining the type of action: add friend, comment, etc.
  • object: an id refering to: User, Activity, whatever, depending on the type of verb. I would get the correct object depending on the value of the verb.

My biggest doubt about this structure is: How would I return all this data to my Android app. Is it correct to return a JSON with the notification unpopulated (only ID’s), and the Android app would use the ID’s and query the API to build the notification. I mean, the client would make a call to: /getUser/:id to get the username, then /getActivity/:id to get the activity details, you get the point… Wouldn’t that be to much calls just for a notification?

Because, imagine a user getting 50 notifications, that would be ~100 requests only to get the notification details. If that happens to 1K users, it would be 10K requests to get notification details.

News Feed

What’s the best way to my client to get the latest activity? Just query the database for the latest inserted data that matches the criteria?

I shouldn’t be dwelling too much on that because the application will start small, but I would like to start with a not so bad design. That’s my first application of this type so I don’t know what to expect.

Thanks!

Designing a large user preferences menu that isn’t confusing

enter image description here

My app helps pianists to practise their scales. They press a button and are shown a random scale to play. They press the button again and they get another.

I need to allow users to “turn-off” scales, or toggle the boolean variants of those scales, in a preferences screen.

The problem: There are so many scales that my preferences screen is unwieldy. I have 108 unique scales in my app already (with three boolean “variants” each) and that’s only 1/3 of what a professional pianist needs to practice regularly.

Background information

A scale is an ascending, then descending pattern of notes starting and finishing on the same key on the keyboard.

enter image description here

For every one of these 12 keys, there are four different “types” of scale which have major or minor flavours.

  • Octave scale (Major, Harmonic minor, or Melodic minor)
  • Arpeggio (Major or Minor)
  • Scale in sixths (Major or minor)
  • Scale in thirds (Major or minor)

For each of these, a pianist must be able to play the scale:

  • Both hands together OR hands separately
  • Legato (smooth and connected) OR Staccato (percussive and disconnected)
  • Similar motion (hands in same direction) OR Contrary motion (hands in opposite directions)

There’s my issue. I can’t come up with a way to let a user select from all these options without confusing them. Here are my efforts so far:

enter image description here

The first design allows the user to toggle variants, but doesn’t allow them to turn off scales based on individual keys. The second design allows for the opposite; there is no way to toggle the variants.

Further issues:

  • What if a user wants to turn off all minor scales?
  • What if a user wants to toggle all scales to staccato?
  • What if a user wants to turn off all scales based on A flat, for instance?

How to adapt text and/or elements size while designing to smaller screens?

I have a layout I made some time ago on Adobe XD (that was just a personal project) and now I wanna put it on Behance. To do so, I need to duplicate/adapt that layout (designed for desktop) to smaller screens, iPad and mobile.

Since I’m not used to design for smaller screens, after I started I’ve got a doubt: how do I know for example how much I need to decrease both text and UI elements’ sizes? To explain better: I have a text with 40px. How should I calculate to properly decrease that size? Is there like a default percentage to reduce from those values? Maybe some visual “default” rules that every design follows?

I always design for Bootstrap, however I’m not sure if I’m thinking the right way.

(I’ve also posted this on stack overflow, I’m not sure which one is the best suitable to my question).

Thanks for all your thoughts and advices you could tell me. I worked most of time only for desktops, a traditional web designer, and now I’m trying to migrate to UI/UX.

What are good guidelines and principles for designing and balancing superpower stunts in FATE Core?

I want to make a stronger focus on the F in FATE1 in my future campaigns, and that means I’m expecting said campaigns to involve what I usually see broadly referred to as special or superhuman abilities: magical spells, psionics, cyberware, superhero abilities, cinematic mutations and even mundane animal traits (the site doesn’t want me to use more than 5 tags). I have encountered different hacks for handling those, but so far, paradoxically, the approach in the Core book (p. 279-280) seemed to be the simplest and most generally applicable (and subjectively most likeable to me).

Now, the last page says ‘this is art, not science’ about the design of new stunts, but even in arts there are many do’s and do not’s.

Thus I’m asking: what are good guidelines, principles and best practices for designing and balancing superpower Stunts?

Some points refining the answers I seek:

  • These don’t necessarily need to be just superhero powers. Cyberware, psionics, magic, or even some mundane animal abilities fill the niche of ‘can do what humans cannot’ too. Thus, it’s best not to be limited to any one setting or explanation of why they work.

  • I’m most interested in qualitative Stunts that enable doing things that are normally not doable at all. Flight, insubstantiality, ability to Shoot without a weapon, ability to breathe water (in addition to air) indefinitely.

  • Evaluating whether a stunt’s effect should be FP-powered, require a roll, or neither, and what’s a fair tradeoff for changing between these categories.

  • Generally operating in a context where not all PCs and NPCs necessarily possess as many, or in fact any such powers. E.g. a Babylon 5 campaign where 1-2 PCs are telepaths and the rest aren’t; a Ghost in the Shell campaign where one PC refused to install cybernetics and thus lacks the special abilities of other PCs; a mixed Star Wars party with a Jedi/Sith, a combat droid with some odd integral modules, and a few regular folks like smugglers or diplomats. So the guidelines should produce special ability Stunts that are neither better nor worse than mundane Stunts, and no better nor worse than just hoarding Refresh.

Answers that are not helpful:

  • Already known: Being equal to one Refresh but also being more narrowly applicable, a quantitative (+2 effect) Stunt should on average get two uses per minor milestone.

  • Already known: Stunts which allow using one skill instead of another in a narrow circumstance/context/etc.

  • Not constructive: “Just use what works best for your table”. We are a table and we want to know the principles to estimate what would work best, and what should never be even tried etc. (In fact, a big reason for joining RPGSE for me was avoiding this sort of non-answer.)

  • Outside the scope of the question: “Just use Aspect Permissions instead”; not only are Aspect Permissions worthy of a separate question, but also this answer says nothing on the topic of actually designing Stunts.


1 FATE = Fantastic Adventures in Tabletop Entertainment.

How to stop wasting time designing architechture

I have recently graduated from uni and started working as a programmer. I don’t find it that hard to solve “technical” issues or do debugging, things that I would say have 1 solution. But there seems to be a class of problems that don’t have one solution — things like software architecture. These things befuddle me and cause me great distress.

I spend hours and hours trying to decide how to “architect” my programs and systems. For example, do I split this logic up into 1 or 2 classes, how do I name the classes, should I make this private or public, etc. These kinds of questions take up so much of my time, and it greatly frustrates me. I just want to create the program, the architecture be dammed.

How can I more quickly get through the architecture phase and onto the coding and debugging phase, which I enjoy?

Designing a Python API with defaults

I’m designing an API for a Python library. The user will create objects with several parameters. In most cases, the user will either leave these at their default values or will set them globally, for all objects. However, it should be possible also to set them individually on a per-object basis.

The most obvious way to do this is to do something like this:

# myModule.py  contrafibularity_threshold = 10.7 pericombobulation_index = 9 compunctuous_mode = False  class Thing:     def __init__(self):         self.contrafibularity_threshold = None         pericombobulation_index = None         compunctuous_mode = None      def get_contrafibularity_threshold(self):         if self.contrafibularity_threshold is not None:             return self.contrafibularity_threshold         else:             return contrafibularity_threshold      def get_pericombobulation_index(self):         if self.pericombobulation_index is not None:             return self.pericombobulation_index         else:             return pericombobulation_index      def get_compunctuous_mode(self):         if self.compunctuous_mode is not None:             return self.compunctuous_mode         else:             return compunctuous_mode 

This works as I would like: it allows the user to do myModule.contrafibularity_threshold = 10.9 to set the global value while also being able to do someThing.contrafibularity_threshold = 11.1 to set it for a particular object. The default may be changed at any time and will affect only those objects to which a specific value has not been assigned.

However, the code above contains a lot of repetition, and seems prone to hard-to-notice bugs if I make a mistake copy-pasting the code. Is there a better (less repetitive, less error-prone, more Pythonic) way to achieve these goals? I don’t mind changing the API, as long as the user can change the defaults at both the global and per-object level.

(One could arguably improve the above code by using @property, but that wouldn’t resolve the repetitive code issue.)

Designing database job monitoring

I have several Oracle database where my in-house applications are running. Those applications use both dba_jobs and dba_scheduler_jobs.

I want to write monitoring function: check_my_jobs which will be called periodically by Nagios to check if everything is OK with my jobs. (Are they running? Is it Broken? Is next_run_date delayed? and so on)

Solutions:

Due to the fact that I have to monitor jobs on different databases, there is two way of implementing the solution:

  1. Create monitoring function and configuration tables only on one database which will check jobs on every database using the Database link.

    pros: Centralized functionality, easy to maintain.
    cons: I have to make a check using the Database link.

  2. Create monitoring function and configuration tables in every database where I want to check jobs.

    pros: I don’t have to use DB link
    cons: Duplicated monitoring code on every database

Which solution is better?