01 April, 2015

Welcome to StackEdit!

Welcome to StackEdit!

Hey! I’m your first Markdown document in StackEdit1. Don’t delete me, I’m very helpful! I can be recovered anyway in the Utils tab of the Settings dialog.


Documents

StackEdit stores your documents in your browser, which means all your documents are automatically saved locally and are accessible offline!

Note:

  • StackEdit is accessible offline after the application has been loaded for the first time.
  • Your local documents are not shared between different browsers or computers.
  • Clearing your browser’s data may delete all your local documents! Make sure your documents are synchronized with Google Drive or Dropbox (check out the Synchronization section).

Create a document

The document panel is accessible using the button in the navigation bar. You can create a new document by clicking New document in the document panel.

Switch to another document

All your local documents are listed in the document panel. You can switch from one to another by clicking a document in the list or you can toggle documents using Ctrl+[ and Ctrl+].

Rename a document

You can rename the current document by clicking the document title in the navigation bar.

Delete a document

You can delete the current document by clicking Delete document in the document panel.

Export a document

You can save the current document to a file by clicking Export to disk from the menu panel.

Tip: Check out the Publish a document section for a description of the different output formats.


Synchronization

StackEdit can be combined with Google Drive and Dropbox to have your documents saved in the Cloud. The synchronization mechanism takes care of uploading your modifications or downloading the latest version of your documents.

Note:

  • Full access to Google Drive or Dropbox is required to be able to import any document in StackEdit. Permission restrictions can be configured in the settings.
  • Imported documents are downloaded in your browser and are not transmitted to a server.
  • If you experience problems saving your documents on Google Drive, check and optionally disable browser extensions, such as Disconnect.

Open a document

You can open a document from Google Drive or the Dropbox by opening the Synchronize sub-menu and by clicking Open from…. Once opened, any modification in your document will be automatically synchronized with the file in your Google Drive / Dropbox account.

Save a document

You can save any document by opening the Synchronize sub-menu and by clicking Save on…. Even if your document is already synchronized with Google Drive or Dropbox, you can export it to a another location. StackEdit can synchronize one document with multiple locations and accounts.

Synchronize a document

Once your document is linked to a Google Drive or a Dropbox file, StackEdit will periodically (every 3 minutes) synchronize it by downloading/uploading any modification. A merge will be performed if necessary and conflicts will be detected.

If you just have modified your document and you want to force the synchronization, click the button in the navigation bar.

Note: The button is disabled when you have no document to synchronize.

Manage document synchronization

Since one document can be synchronized with multiple locations, you can list and manage synchronized locations by clicking Manage synchronization in the Synchronize sub-menu. This will let you remove synchronization locations that are associated to your document.

Note: If you delete the file from Google Drive or from Dropbox, the document will no longer be synchronized with that location.


Publication

Once you are happy with your document, you can publish it on different websites directly from StackEdit. As for now, StackEdit can publish on Blogger, Dropbox, Gist, GitHub, Google Drive, Tumblr, WordPress and on any SSH server.

Publish a document

You can publish your document by opening the Publish sub-menu and by choosing a website. In the dialog box, you can choose the publication format:

  • Markdown, to publish the Markdown text on a website that can interpret it (GitHub for instance),
  • HTML, to publish the document converted into HTML (on a blog for example),
  • Template, to have a full control of the output.

Note: The default template is a simple webpage wrapping your document in HTML format. You can customize it in the Advanced tab of the Settings dialog.

Update a publication

After publishing, StackEdit will keep your document linked to that publication which makes it easy for you to update it. Once you have modified your document and you want to update your publication, click on the button in the navigation bar.

Note: The button is disabled when your document has not been published yet.

Manage document publication

Since one document can be published on multiple locations, you can list and manage publish locations by clicking Manage publication in the menu panel. This will let you remove publication locations that are associated to your document.

Note: If the file has been removed from the website or the blog, the document will no longer be published on that location.


Markdown Extra

StackEdit supports Markdown Extra, which extends Markdown syntax with some nice features.

Tip: You can disable any Markdown Extra feature in the Extensions tab of the Settings dialog.

Note: You can find more information about Markdown syntax here and Markdown Extra extension here.

Tables

Markdown Extra has a special syntax for tables:

Item Value
Computer $1600
Phone $12
Pipe $1

You can specify column alignment with one or two colons:

Item Value Qty
Computer $1600 5
Phone $12 12
Pipe $1 234

Definition Lists

Markdown Extra has a special syntax for definition lists too:

Term 1
Term 2
Definition A
Definition B
Term 3

Definition C

Definition D

part of definition D

Fenced code blocks

GitHub’s fenced code blocks are also supported with Highlight.js syntax highlighting:

// Foo
var bar = 0;

Tip: To use Prettify instead of Highlight.js, just configure the Markdown Extra extension in the Settings dialog.

Note: You can find more information:

  • about Prettify syntax highlighting here,
  • about Highlight.js syntax highlighting here.

Footnotes

You can create footnotes like this2.

SmartyPants

SmartyPants converts ASCII punctuation characters into “smart” typographic punctuation HTML entities. For example:

ASCII HTML
Single backticks 'Isn't this fun?' ‘Isn’t this fun?’
Quotes "Isn't this fun?" “Isn’t this fun?”
Dashes -- is en-dash, --- is em-dash – is en-dash, — is em-dash

Table of contents

You can insert a table of contents using the marker [TOC]:

MathJax

You can render LaTeX mathematical expressions using MathJax, as on math.stackexchange.com:

The Gamma function satisfying is via the Euler integral

Tip: To make sure mathematical expressions are rendered properly on your website, include MathJax into your template:

<script type="text/javascript" src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS_HTML"></script>

Note: You can find more information about LaTeX mathematical expressions here.

UML diagrams

You can also render sequence diagrams like this:

Created with Raphaël 2.1.2AliceAliceBobBobHello Bob, how are you?Bob thinksI am good thanks!

And flow charts like this:

Created with Raphaël 2.1.2StartMy OperationYes or No?Endyesno

Note: You can find more information:

  • about Sequence diagrams syntax here,
  • about Flow charts syntax here.

Support StackEdit


  1. StackEdit is a full-featured, open-source Markdown editor based on PageDown, the Markdown library used by Stack Overflow and the other Stack Exchange sites.
  2. Here is the text of the footnote.

05 March, 2015

Bookmarklet idea — Collapse all subsections?

When looking at some articles at Rosetta Code I came up with the idea of «What if we could collapse all the language subsections?», or in the more general sense «What if we could add collapsing to all subsections of a web page?».

The gist of the idea is that for a site like Rosetta Code where you could be interested in mainly one or a few languages, most of the sections are not so interesting. Similarily on a web page with rather a long text, it could be interesting to look only at a particular section. Wouldn’t it then be nice to collapse all the other sections, and expand them when needed?

Introducing bookmarklets

To achieve this one needs to change the web page in question. Ideally one could contact the web author and ask them to add collapsible sections, but this is not feasible in all cases. Another option would be to use some Greasemonkey scripts (or user scripts), but these are depreceated by a number of reasons.

Bookmarklets are however still applicable, and not so dangerous to use, as you choose when and on which pages you want to activate them. You might need to reenable them after clicking on a new link, but they could do the trick for this task.

Make Your Own Bookmarklets With jQuery from Smashing Magazine and Create bookmarklets the right way from tuts+, shows examples of what is needed to make an jQuery enabled bookmarklet. Either of these could be used as a base template together with the pseudocode and specifics given below. For those interested in playing a little with this, you could also install the jQuerify extension for Chrome.

General pseudocode

The gist of the idea to get collapsible section are:

  • The web site needs to use logical well-structured html, and header elements (h1 through h6) which will be used to divide into sections
  • If a header element does not have an id, assign an unique id to the header element
  • Add div’s between header elements at same level, where the id of the div corresponds to the header id
  • For each header element add span element with text of show or hide
  • Use jQuery (or similar) to hide/show sections when clicking the span elements
  • Possibly change formatting of header elements so that they don’t use that much space

Some specifics for Rosetta Code

When applied to Rosetta Code, i.e. see String_length and/or String_lenght#Swift, one could imagine that the first would render the whole page, but collapse all sections from h2 and lower. The second variant (with a language tag) could then autoexpand the Swift section, and thusly show the general description and the corresponding solution for the Swift language.

Maybe it also would be nice to auto-hide the TOC, and possibly change all the headers into a comma separated list, which could expand the given section. (In other words, auto-hide all the header’s and all div’s, and only show a clickable language name which would show/hide that language.

The main part of the page would then look something like:

<h1>String length</h1>
In this task, the goal is to find the character and byte length of a string …
… and 14 bytes when encoded in UTF-8.
Contents [show ]

4D, ActionScript, Ada, … , Standard ML
<h2>Swift ______________________________________ (edit) </h2>
<h3>Character length</h3>
Swift has a concept of …
… end of text
Tcl, TI-89 BASIC, …, zkl

Do note that none of the links are actually working!

Can someone make the bookmarklet?

I do believe this is possible to achieve without to much work, but I’m not sure if I’m currently able to do this in javascript (both due to time constraints and due to limited knowledge of javascript/jQuery). But if someone attempts to do implement this, please let me know, and please let the code be open sourced.

Possibly the specific version for Rosetta Code could be made into a Chrome extension, or if some of the system administrators sees this and like the idea, they could make it a part of the Rosetta Code site as well.

I for one would at least love to see this implemented on Rosetta Code, in addition to having the category pages for a given language auto-link to that language section.

01 March, 2015

Learning Swift through Rosetta Code Contributions

Spring 2015 I decided to learn Swift so that I could develop applications for the Apple platforms of Mac OS X and iOS. I soon found that Swift is an evolving language, and that online resources are getting there bit by bit.

Rosetta Code – Loads of Programming Examples

One of the resources I found was Rosetta Code which describes itself like:

Rosetta Code is a programming chrestomathy site. The idea is to present solutions to the same task in as many different languages as possible, to demonstrate how languages are similar and different, and to aid a person with a grounding in one approach to a problem in learning another.

This site therefore can both provide me with information as to how different tasks are accomplished using Swift, and maybe just as interesting since I want to learn Swift a list of tasks not implemented in Swift.

I’m planning to implement some of these unimplemented tasks, and if you want to you can see the special page of my contributions.

Connection to «Odds by Even»

In addition to making contributions to Rosetta Code I will also from time to time, I hope, be posting articles here on Odds by Even on given themes which I find interesting when stumbling along learning Swift.

As an example when doing research to extend the String repeat sections on Rosetta Code, I found stuff talking about extensions and overloading, and I also dived into a performance analysis on various alternatives. These areas will be covered in future articles.

The plan is also to include blog articles which links to Swift playgrounds, which is an interesting tool/approach to playing with different snippets of Swift code. In due time also articles on other languages, or some tidbits on the tools I’m using will be presented.

Questions and Resources through StackOverflow

As I’m only starting out, I’m not quite sure what other resources are available beside random articles, but I do know that StackOverflow holds loads of articles tagged for Swift, and my homepage on StackOverflow will link to my activity and contributions.

StackOverflow also has a page on the Swift tag which has links to different resources related to Swift. And when doing searches on google, I tend to favour the results from StackOverflow as they usually are concrete and to the point.

Do however be notified that since Swift is an evolving language, some of the answers might be referring to a previous version of Swift. This especially is true for older questions and answers from first half of 2014. comment test…

09 February, 2007

Ramblings regarding 43things.com

Five weeks ago I stumbled across 43things.com, and made myself an account. Today I revisited the site after being reminded about it by one of my students, and now I've decided to give myself a challenge to either turn 43things.com into something useful, for me that is, or leave the site alltogether.

In this attempt I soon discovered that to make it useful I need to add some structure to my goals, and therefore I've created this blog to report on my progress on 43things and my tips on how to excel at using 43things! I also read the article on "Good goals".

Being S.M.A.R.T.

I also saw a goal, which was misspelled, so I rewrote it, and added an entry linking to this blog. My recapitualtion of keeping S.M.A.R.T. goals is like this:
  • SMART: Both an acronym for this goal scheme, and who wants a dumb goal in their life?
  • Measurable. If it's not measurable, how are you going to know when it's done?!
  • Achievable. Although setting goals is about stretching your capabilities, don't stretch them to long. If it's too far you won't be able to do them, so make them achievable
  • Realistic. This goes almost along the same lines as achievable, but is more about knowing your limits
  • Time-bound. By implying a time bound on your goals, you further enforce the possibillity of actually meating your goals

Changing habits, not reaching a goal

But what if you want to change a habit, like getting up earlier in the morning? This is not easily measurable, but it's still a worthwhile goal to go for. But how can you change this into a S.M.A.R.T. goal? And it's not a good answer to make a goal like "I want to change the habit of not getting up early in the morning".

One way of doing so is to add tags to goal, i.e. 'deadline-2007-02-29', and send yourself a reminder as to whether you achieved. Another option is to add an entry specifying your more specific achievable goals, i.e. "To achieve this goal, I will need to get up early at least 5 days each week for a month". A third option, is to specify your goal somewhere, like in a blog?

Using either of these options, or something similar, you can have the goal of "getting up earlier in the morning", and still have something which is measurable! Of course on completion, you should send a reminder to yourself some time later, to actually check that you have changed your habit!

24 July, 2005

As it is in Heaven

On Friday I saw As It Is in Heaven, a movie which actually moved me. Imdb.com has the following resume:

A successful international conductor suddenly interrups his career and returns alone to his childhood village in Norrland, in the far north of Sweden.It doesn't take long before he is asked to come and listen to the fragment of a church choir, which practises every Thursday in the parish hall. Just come along and give a little bit of good advice. He can't say no, and from that moment, nothing in the village is the same again. The choir develops and grows. He makes both friends and enemies. And he finds love.


This is, on it's own, a decent plot summary, but to me the movie meant something quite different. To me this movie presents a way of living which inspires me. As the choir develops and moves into the music guided by the conductor, they also touches some central issues regarding life it self.

As a whole it inspires me as to how life should be lived at it fullest(, and some bad examples also exists to show the difference). It presents a sincere and honest way to meet with all the problems of life. In the movie we meet a husband bullying his wife, a priest of the real old school where christians can't have any fun, a woman with a history of many men, a man being less gifted intellectually, the conductor with his own issues of bullying from his childhood.

Do note that the issues aren't solved, but it shows how to meet them with love and understanding. And how not to handle them, by hiding or ignoring them. All of this comes to a sort of conclusion in two scenes, Gabriellas song and the ending. I will not explain what happens, but if suffices to say that I was moved and inspired and hope to change my life somehow to be an better christian.

Another thing I also like with this movie, is that it in fact isn't an evangelical movie saying that christianity is the ultimate solution to everything. As such it's in fact kind of neutral to religion, and present idioms and ways of living which should apply to everybody. And this really appeals to me, because I stribe to seek a life style where it is clear that I'm a christian, but not because I preach the gospel at all times, but because I have a living, true, honest and sincere relationship with both God and the people that he loves. And that includes you...

17 July, 2005

Odds by Even

Hi there. I don't know the odds of anybody reading this blog, and neither the odds of me updating this blog in the long run. Maybe it will be popular, and maybe not. Only time will tell.

This blog will be dedicated to the randomly odd thoughts which occurs in my, Even Holen's, brain. Most likely they will be related to either computing, as I'm a Master of Computer Science, christianity and lifestyle in general, or some of my other hobbies. And who knows where I'll go in the future?

So until then, bye-bye and happy surfing...