Memory encoding. More...
#include <encoding.h>
Public Types | |
| typedef unsigned char * | position_type |
Public Member Functions | |
| encoder (unsigned char *buf, unsigned size) | |
| Construction. | |
| void | put_8 (unsigned char c) |
| Puts one character into the encoding buffer. | |
| void | put_16 (bm::short_t s) |
| Puts short word (16 bits) into the encoding buffer. | |
| void | put_16 (const bm::short_t *s, unsigned count) |
| Method puts array of short words (16 bits) into the encoding buffer. | |
| void | put_32 (bm::word_t w) |
| Puts 32 bits word into encoding buffer. | |
| void | put_32 (const bm::word_t *w, unsigned count) |
| Encodes array of 32-bit words. | |
| void | put_prefixed_array_32 (unsigned char c, const bm::word_t *w, unsigned count) |
| void | put_prefixed_array_16 (unsigned char c, const bm::short_t *s, unsigned count, bool encode_count) |
| unsigned | size () const |
| Returns size of the current encoding stream. | |
| unsigned char * | get_pos () const |
| Get current memory stream position. | |
| void | set_pos (unsigned char *buf_pos) |
| Set current memory stream position. |
Memory encoding.
Class for encoding data into memory. Properly handles aligment issues with integer data types.
Definition at line 45 of file encoding.h.
| typedef unsigned char* bm::encoder::position_type |
Definition at line 48 of file encoding.h.
| bm::encoder::encoder | ( | unsigned char * | buf, | |
| unsigned | size | |||
| ) | [inline] |
Construction.
| buf | - memory buffer pointer. | |
| size | - size of the buffer |
Definition at line 509 of file encoding.h.
| encoder::position_type bm::encoder::get_pos | ( | ) | const [inline] |
Get current memory stream position.
Definition at line 611 of file encoding.h.
Referenced by bm::serializer< BV >::gamma_gap_array(), and bm::serializer< BV >::gamma_gap_block().
| void bm::encoder::put_16 | ( | const bm::short_t * | s, | |
| unsigned | count | |||
| ) | [inline] |
Method puts array of short words (16 bits) into the encoding buffer.
Definition at line 569 of file encoding.h.
| BMFORCEINLINE void bm::encoder::put_16 | ( | bm::short_t | s | ) |
Puts short word (16 bits) into the encoding buffer.
| s | - short word to encode |
Definition at line 554 of file encoding.h.
Referenced by bm::serializer< BV >::encode_bit_interval(), bm::serializer< BV >::encode_gap_block(), bm::serializer< BV >::encode_header(), bm::serializer< BV >::gamma_gap_block(), put_prefixed_array_16(), and bm::serializer< BV >::serialize().
| void bm::encoder::put_32 | ( | const bm::word_t * | w, | |
| unsigned | count | |||
| ) | [inline] |
Encodes array of 32-bit words.
Definition at line 647 of file encoding.h.
| BMFORCEINLINE void bm::encoder::put_32 | ( | bm::word_t | w | ) |
Puts 32 bits word into encoding buffer.
| w | - word to encode. |
Definition at line 630 of file encoding.h.
Referenced by bm::serializer< BV >::encode_bit_interval(), bm::serializer< BV >::encode_header(), and put_prefixed_array_32().
| BMFORCEINLINE void bm::encoder::put_8 | ( | unsigned char | c | ) |
Puts one character into the encoding buffer.
| c | - character to encode |
Definition at line 544 of file encoding.h.
Referenced by bm::serializer< BV >::encode_bit_interval(), bm::serializer< BV >::encode_gap_block(), bm::serializer< BV >::encode_header(), bm::serializer< BV >::gamma_gap_array(), bm::serializer< BV >::gamma_gap_block(), put_prefixed_array_16(), put_prefixed_array_32(), and bm::serializer< BV >::serialize().
| void bm::encoder::put_prefixed_array_16 | ( | unsigned char | c, | |
| const bm::short_t * | s, | |||
| unsigned | count, | |||
| bool | encode_count | |||
| ) | [inline] |
Encode 8-bit prefix + an array
Definition at line 527 of file encoding.h.
References put_16(), and put_8().
Referenced by bm::serializer< BV >::gamma_gap_array().
| void bm::encoder::put_prefixed_array_32 | ( | unsigned char | c, | |
| const bm::word_t * | w, | |||
| unsigned | count | |||
| ) | [inline] |
Encode 8-bit prefix + an array
Definition at line 516 of file encoding.h.
References put_32(), and put_8().
Referenced by bm::serializer< BV >::serialize().
| void bm::encoder::set_pos | ( | unsigned char * | buf_pos | ) | [inline] |
Set current memory stream position.
Definition at line 619 of file encoding.h.
Referenced by bm::serializer< BV >::gamma_gap_array(), and bm::serializer< BV >::gamma_gap_block().
| unsigned bm::encoder::size | ( | ) | const [inline] |
Returns size of the current encoding stream.
Definition at line 603 of file encoding.h.
Referenced by bm::serializer< BV >::serialize().


I'm really sorry, but ::app:: encountered some kind of... well... a bug.
The best thing to do would be to send me the following information by filling an "issue" on GitHub (see below), so I can fix the problem.
I'm really sorry, but ::app:: encountered some kind of... well... a bug.
The best thing to do would be to send me the following information by filling an "issue" on GitHub (see below), so I can fix the problem.


How to implement snippets, an enhancement to the display of search results
About Snippeting
To make it easier for users to read search results at a glance, add snippet functionality. When snippets are enabled, a brief portion of the document text is shown along with each search result.
Why Use Snippets?
Snippets can significantly increase the speed with which users can go from search to action, often providing enough information that the user does not even have to click on the search result link. For example, a list of results for local veterinarians might come with snippets that show each vet's phone number and address, making it easier and faster for the pet owner to quickly place a call to the nearest clinic.
Snippets can also help the user understand why a particular search is not returning the expected results. With this information, the user can refine the query.
Snippets are, in fact, so useful and so common that users probably take their presence for granted, and it is difficult to think of a reason for not using them.
How It Works
Snippets are selected by the IndexTank server based on the search terms and snippet fields in the query.
- Query: specify one or more document fields from which you want to pull snippets. It's fairly typical to use the text field. If you have defined custom document fields, you can use them as well.
- Server: The IndexTank server selects a portion of text to return as a snippet from each document field specified in the "snippet fields" clause of the query. The server selects the portion that contains as many as possible of the search terms from the query. For example, if the query is looking for the terms "vet" and "cat," a snippet that contians both those terms will be preferred over one that contains multiple instances of only one of the terms. The server returns up to 20 words of snippet text with the search terms highlighted.
Quick Start: Copy & Paste
Tweak the following code for your needs, and you're ready to go
Before you start
-
{% bg 'work' %}
{% endbg %}
For Ruby environments we provide a gem that handles all the REST calls for you in a very Ruby-fashioned way.
- Download the Ruby client if you have not already done so.
- Know your index's public URL. You'll need it to instantiate the client. Find the public URL on the Dashboard.
Set Snippet Fields in Query
The following code shows how to request snippets.
{% box 'code' %}results = index.search(query, :fetch => 'title,timestamp', :snippet => 'text') print results['matches'], " results\n" results['results'].each {|doc| docid = doc['docid'] title = doc['title'] timestamp = doc['timestamp'] text = doc['snippet_text'] print "docid: #{docid}, title: #{title}, timestamp: #{timestamp}, text: #{text}" }{% endbox %}
More Information
- Searching in the IndexTank API reference


--- layout: post title: Extend orgmode link type to support new kind of links categories: [productivity] tags: [org-mode] ---
I need to follow up all the open bugs assigned to my team, so I create OPEN items in orgmode todo files. The detailed information of the bug can be looked up in bug system. Now the question is that I need a convenient way to open these bug in web browser. The most suitable way is to extend orgmode link type to support the bug system URL.
I defined new type of orgmode link "BUG:123", it will lead me to "http://my.local-bugsystem.com?ID=123".
My org-bug.el
looks like this:
(require 'org) (org-add-link-type "BUG" 'org-bug-open) (defun org-bug-open (path) "Visit the tracker bug on path, PATH should be a bug ID." (browse-url (concat "http://my.local-bugsystem.com?Id=" path))) (provide 'org-bug)
And then add one line to my .emacs
file:
(load-file "~/.emacs.d/site-lisp/org-bug.el")


 Take a look here which great companies use Go to power their services.
Go Web Examples provides easy to understand code snippets on how to do web development in the Go programming language and is inspired by Go By Example, which has a great introduction into the fundamentals of this language.
To get things started, check out the first example on how to create a classical "Hello World" web application.
The Basics
Security


About this entry
You"re currently reading "TeeHee!," an entry on a crick in the net
- Published:
- 05.18.05 / 8am
- Category:
- Circular File
--- layout: post title: TeeHee! categories: Circular File published: 2005-05-18 08:00:00 ---
You"re currently reading "TeeHee!," an entry on a crick in the net
u get a fresh naan.


You can edit some parts of the parsed event here.
{{item.id}}
{{item.startTimestamp | date:'dd-MM-yyyy HH:mm:ss'}}
{{item.endTimestamp | date:'dd-MM-yyyy HH:mm:ss'}}
{{a.name}} ({{a.email}})
{{item.tsCreated | date:'dd-MM-yyyy HH:mm:ss' }}


[PART IA.] MOTOR VEHICLE REGULATION
[§286-16] Powers and duties. The director of transportation shall prescribe uniform standards and procedures for motor vehicle inspection, driver licensing, and registration, including the form and content of records to be maintained for the registration of vehicles and for the licensing of drivers. [L Sp 1977 1st, c 20, pt of §8]


A look at data shows that the recent low-point of bookstore sales is part of a larger decade-spanning trend.
By Leonardo Lopez Carreno
November 12, 2021
Bookstores have seen a steady decline in sales, US Census Bureau data shows. [Photo via Tony Cenicola/The New York Times]
In 2020, sales from bookstores reached their lowest value in over ten years. This was mostly influenced by the COVID-19 pandemic, which motivated people to buy books online to avoid going outside. However, the low revenue should not be exclusively attributed to these circumstances, as the low sales fall in line with a steady years-long decline.
The following chart uses data from the U.S. Census Bureau on bookstore revenue since 2008 and data from the Association of American Publishers on general revenue from the book publishing industry:
When asked about what bookstores could do to prevent this, John McKay, Senior Vice President of Communications at the Association of American Publishers, said: “I think that it’s not just up to bookstores, but up to book-lovers as well. […] Whenever I go into a new city, I always look for a bookstore to visit. People have to make a choice to support their local bookstores.”
Sources: US Census Bureau, Association of American Publishers (through Statista)


Remember, you will not be able to see all of the other players. The game is not over and you should keep playing as long as you see the following message:
Some players still have color conflicts...
When all color conflicts have been solved, the message will change to this:
All color conflicts are solved!
After that, the game will end.


Home
News
Contact
About
Personal
Name
*
Email
*
Phone
*
Subject
Appointment
Interview
Regarding a post
Message
Message
*


Defining TALES variables
The TAL define attribute adds a new variable definition to the current TALES context. It is in many ways like a variable definition in any programming language.
Syntax
tal:define="SCOPE NAME EXPRESSION"
Variable scope
The variable scope (SCOPE
) is optional, and defaults to local if omitted. It may
have one of two possible values, controlling how the variable is stored within the TALES context:
- local indicates that the variable will be available to this element, and all of its child elements. However, sibling elements or parent elements will not have access to this variable.
- global indicates that the variable will be available document-wide; once the ZPT renderer has rendered the current element, any subsequent element may make use of this variable definition, regardless of whether it is a child of the current element or not.
Global definitions are generally only very rarely required, as it is possible to define local variables at the root level of the document if required. The ZPT parser always operates upon a document in the order it is written, from the beginning to the end.
The variable name
Permitted variable names (NAME
) are one or more non-whitespace characters. They are case
sensitive and mandatory.
Note that the TALES csharp:
expressions plugin is installed by
default.
If this plugin is installed then tal:define
variable names
must also be valid C♯ variable names.
The value expression
The expression (EXPRESSION
) is mandatory; it is
interpreted as a TALES expression.
The expression is evaluated and the result stored as the value of the variable. null
values are
handled normally – if the expression evaluates to null, then null is stored in the TALES context.
If the TALES expression result indicates that the action should be cancelled then no variable is created/changed. If multiple variables are defined within the same attribute and a single definition is cancelled in this way, other definitions in that attribute are unaffected and are processed normally.
Variable naming conflicts
It is permitted to define multiple variables of the same name; here is how this works:
Scopes searched
When a TALES context is used to resolve a root variable, local variables (which includes repeat variables) are searched before global variables. Thus, local variables will always hide global variables of the same name.
Identically-named local variables mask their parents
If multiple local variables are defined of the same name then TAL will use the variable which is defined upon
either the current element, or the closest parent element. The same is true for tal:repeat
variables. For example:

The following renders as "Three"

Foo

The following renders as "Two"

Foo

The following renders as "One"

Foo

Once a local variable 'goes out of scope' (outside its defining element), the next closest in-scope definition of the same name will become visible once again.
Global variables are overwritten
If a global variable definition would create a variable of the same name as an existing global variable, then the existing variable is overwritten with the new value. Once this has happened, there is no way to get the previous value.
Defining multiple variables at once
It is permitted to define multiple variables in the same tal:define
attribute. Each definition
is separated by a semicolon (and optional whitespace for readability):

Three variables all defined.

If you wish to use a semicolon character in a definition expression (for example as part of
a string:
TALES expression) then you must escape it
by doubling-it up: ;;.


jQuery Organisation Chart
Github
Twitter
Blog
Show underlying list.
Food
Beer
Vegetables
Click me
Pumpkin
Aubergine
A link and paragraph is all we need.
Fruit
Apple
Granny Smith
Berries
Blueberry
Cucumber
Bread
Chocolate
Topdeck
Reese's Cups


<summary>
The <summary> element contains a text summary associated with a book event (such as <approved> or <reviewed>) or with the list of copyrights for the book.
<approved>
<reviewed>
Category: Bookmap metadata elements


To enable a view:
Click “Setup…” next to the view that you want to enable. This opens the inspector.
Select the primary key columns.
Finally check “BaseTen enabled.”
BaseTen updates its objects based on database notifications it receives. To receive notifications from tables and views, they need to be BaseTen-enabled. In practice, some triggers and rules are added into them and tables are created into the BaseTen schema.
Click “Setup…” next to the view that you want to enable. This opens the inspector.
Select the primary key columns.
Finally check “BaseTen enabled.”


--- layout: post esbma_id: 1811 title: Stories from my experiences learning Scrum date: 2011-09-01 14:51:05 ---
This is the paper I submitted for the proceedings of Agile 2011.
Abstract--An experienced (read: "old") software developer recounts the ups and downs of learning Scrum as part of a geographically distributed team working on a pre-release product.
In January of 2008, Jeff and I began working on a new project. Originally, we just called it an exploration, more like research than product development. We wanted it to eventually become SourceGear's next big product. But we had a lot of work to do before we could even consider that.
Jeff lives in southern Indiana. I live in central Illinois. For quite a while, it was just the two of us.
What development methodology did we use? Well, we both have plenty of gray hair (or rather, I assume and hope that Jeff's hair would be gray if he had any left). We've been working together since 1992. And even though it's easy to look at our code and know which of us wrote it, we tend to have the same approach, in all the ways that matter.
So, our development methodology looked like this:
Every day, do
whatever seems
to make the most sense.
And this mostly worked fine.
Eventually, our research project moved far enough along that our company decided to make it real.
Disclosure: Veracity has been developed entirely by my company, SourceGear, and I hope that we someday find a way to make money doing something related to it. If the mention of Veracity here offends you, remember that Veracity itself is open source (Apache License version 2.0). If you're still bothered, keep in mind that there's a very good chance I will fail to make any money and therefore end up selling my guitar collection to pay for ramen noodles. If you're still not feeling better, please accept my apologies, and my suggestion that you dismiss me as the evil, money-grubbing entrepreneur that I am.
To do that, we needed to gradually migrate more of our developers onto the effort.
But Jeff and I are the wrong foundation for building a team. Neither of us is likely to ever win an award for our ability to work and play well with others. If our team of two became a team of ten, who would, you know, coordinate stuff? We would need somebody sort of manager-ish, right?
Jeff is, well, a nerd. To the core. He's one of the best developers I have ever known, but he's not really the manager type. To be fair, I guess we don't really know if Jeff would be any good as a project manager. Similarly we don't know if Gwyneth Paltrow would beat Mike Tyson at boxing. She's never tried it. It never really occurred to anybody that she would.
But I've tried it. Er, management, not boxing. And it usually hasn't gone very well. In my history with SourceGear, I have functioned well as a provider of vision or code, but my efforts to be a provider of structure or predictability have largely failed. In short, I'm a lousy manager. Most of my coworkers are polite enough not to say it that way, but I think we all know the score.
Regardless of what terminology you prefer, a team of ten people needs somebody who is thinking about those people.
These are mostly questions about people, not code. It's not really that I don't like people. I just get so engrossed in the project that I forget about them.
So the first thing we had to fix about our team was to make it into a container where people could be placed safely. In March 2009, we added a third person, Ian. The idea was that Ian would initially join the team as a developer and become the project manager as the team grew. We wanted him there early so he could develop a lot of knowledge of the code before his time became consumed with helping others.
How did our methodology change with the addition of Ian? Not that much. The group was still very small. You can survive without much structure when there are only two or three people involved. We changed our methodology to:
Every day, do
whatever seems
to make the most sense.
And try to remember to
talk to each other.
And this mostly worked fine.
In the fall of 2009, several other SourceGear developers got freed up all at the same time. We began transitioning them to join our team. Suddenly, our methodology seemed inadequate.
SourceGear had never really been big on any kind of formal process. We had some of the elements. We tend to do specs. We have reasonably formal QA. We have test plans, continuous integration, release cycles, and stuff like that. But nobody is really following any sort of documented process or methodology. So as the team was growing, we talked about maybe trying to follow some kind of method that is well-known. We asked ourselves if maybe we should try and use Scrum.
I recall the initial discussion about Scrum with only Ian, Jeff and myself. Ian was enthusiastic about Scrum. I was enthusiastic about not having to do Ian's job. And Jeff mumbled something about tracking down a stray pointer that was causing his code to dump core.
So we decided to give Scrum a try. In the course of writing this paper, we dug up Ian's slide deck from the team meeting where he announced our plan to use Scrum. It talks about pigs and chickens and sprints and backlogs and burndown charts and daily standups and the obligatory reference to Michigan football that he can't resist mentioning at every meeting.
Attitudes from the people on the team about Scrum seemed to fall in three groups:
1. People who thought Agile was a synonym for "No process" and "We don't have to do specs anymore".
2. People who thought Agile would be a strict, burdensome methodology, filled with TPS reports and all kinds of distractions to prevent us from building software.
3. Oh, and there was one guy who knew about Agile and liked the idea.
We decided to proceed with Scrum and agreed to use the parts that work, ignore the parts that don't make sense, and try to get better improve our practices every sprint.
We began holding a 15-minute status meeting every day at 11am central time. At first, we had plenty of grumbling on the team about the idea of a meeting every day. Some of that grumbling might have come from me. I'm no fan of meetings. But our daily standup has turned out to be a useful thing without being too much of a disruption. We've mostly learned to exchange just the right amount of information. We use our daily standup to start discussions which then get taken offline.
We do try to follow a basic script, going around the room with each person giving a brief report:
We've had a wide diversity of styles for reports. Sometimes a report turns into a rambling stroll. And once in a while, a discussion breaks out and has to be killed mercilessly.
In my opinion, the most memorable report ever came from Brody, who had been working on the "merge" feature. When it came his turn to speak, he simply bellowed, "MERGE". That was it. One word. Actually, one syllable. I wanted to tell Brody that if he had wanted to expend even less effort, he could probably have used the unvoiced form of the consonant. I think if we had all heard "MERSH", we could have figured out what was going on and he wouldn't have had to use quite so much energy.
Our daily standup is somewhat complicated by the fact that our team is not all in the same location. Most of us are in Champaign, Illinois, but we've got one developer in Indiana and another in Florida. So our Scrum meetings involve the use of a speakerphone. And this has triggered various colorful discussions about what kind of music is played in the virtual conference room while people are waiting for others to join the call.
For a very long time, the hold music was some sort of a classical piece. People complained, so I suggested we might switch to some classic Van Halen. People complained even more.
I don't remember how we ended up switching to Styx, but that's when the complaining soared to new heights. I thought the level of whining was way out of proportion, and tried to that there were plenty of worse things to listen to. Meanwhile, Troy, who runs our phone system and is also a developer on the team, wisely started refusing to change the music unless somebody logged a bug. So I added work item T00097 (see Figure 1).
To my amazement, people thought this was an improvement over the previous selections. But this playlist didn't last long. Currently, those who dial in first for the daily standup are treated to a recording of Soviet spy transmissions from the cold war. None of us understand it because (a) we don't speak Russian and (b) the messages are apparently encoded with a one-time pad, but everyone seems to agree that it's better than Mr. Roboto.
Someday perhaps we'll find some hold music that doesn't actively discourage punctuality. In the meantime, I can still say that using the phone for the daily scrum has worked out better than I might have predicted. When Paul (in Florida) told us that he was leaving for a bit to ride his bike over to the beach so he could watch the launch of the space shuttle, it was nice for all of us on the call to be able to say, "I hate you" with just the right vocal inflection. Such subtleties can more easily get lost when using written forms of communication.
I have come to think of our daily standup as being similar to a security guard at a bank. Most security guards stand around for their entire career without ever firing their weapon. It's probably a boring job. But the consistent presence of that security guard probably prevents some big problems from ever happening. Our daily standup is the same way. Nothing exciting ever really happens. But we can confidently assume that many big problems have been avoided because we regularly take the time to get synced up.
The culture of Scrum teams seems to be built on working together in shared spaces. In contrast, our company has always placed a high value on each person having a private office.
We are aware that there are tradeoffs here. A private office gives each person a quiet place to work, but it also creates the opportunity for people to get isolated. So even as we provide private offices, we create ways to drag people out of them, including soda in the kitchen, lunch together on Wednesdays, a pool table, and a video game room.
As we get involved with Scrum and begin hearing stories from other people, sometimes it seems like we are missing out on something by not using shared spaces. One of our first Scrum resources was an excellent video [1] made by Hamid Shojaee, founder of Axosoft.
Disclosure: I have no significant legal or financial connection with Axosoft. One of SourceGear's products includes a feature that supports integration with one of Axosoft's products. The two companies exchanged some marketing favors, but no money. Last time I saw Hamid we shared a cab to the airport.
Last year Hamid moved his company into new office space which is configured specifically for Agile teams. Nobody has a private office, not even Hamid. Everyone sits in carefully designed work rooms, designed to accommodate six people.
At SourceGear, we haven't been quite as brave. It feels like it would be so hard for us to make a radical change, for three reasons:
1. People are accustomed to having their own office. It would seem like taking something away from them.
2. It would cost us a pile of money to reconfigure our space. I'd be hesitant to spend that much cash on something that we would consider an experimental change.
3. Our offsite people wouldn't be able to participate in the work rooms anyway.
So we have kept our offices, but we try to promote as much real-time interaction as possible.
One thing we did very early on was to try something we called "pair programming lite". Ian grouped all the developers into pairs. We were not instructed to actually do real pair programming. Rather, we were simply to stay in greater contact, work together on features, review each other's code, and so on. Not surprisingly, Ian assigned Jeff and I to be partners, probably because he didn't think anybody else should have to put up with us.
This experiment didn't work very well, as evidenced by (a) the fact that we stopped doing it, and (b) none of us seem to remember much about it. I had completely forgotten about "pair programming lite" until I was looking through old emails during the writing of this paper. I asked the other people on our team if they remembered anything. The only thing I got back was that Jeremy and Mary Jo were partners, and Jeremy used to bring her chocolate to appease her when he got too annoying.
It's interesting how some agile practices are easily adapted for our circumstances and some are not.
Because we don't work in shared spaces and we are geographically distributed, we do place a lot of emphasis on the between-iteration meetings. Everyone comes to Champaign, and we spend a lot of face time, reviewing what happened the previous sprint and talking about what should happen during the next one.
We also make use of an online chat room, Campfire [2], from 37signals.
Disclosure: I have no financial or legal connection with 37signals. I just like their product.
We use the chat room to create a virtual environment that provides some of the benefits of working together in a shared physical space. Our basic guideline is that if you are working, you should be in the chat room.
Campfire has been an amazing resource for our team. We have little conversations there all throughout the day (see Figure 2). We ask technical questions. We talk about whose fault it was that the build broke. We make jokes and post lolcat pictures.
It may not be quite as cool as having a well-designed team work room, but it is working very well for our situation.
One of our first decisions was about how long our sprints should be. The Scrum gurus seem to always say that each iteration should be 2-3 weeks. I find their arguments to be compelling, but I also find it hard to imagine how that could work for our current situation. Our major stumbling block has been the notion of meaningful end-of-sprint releases.
We currently have iterations of 4-5 weeks. But we have struggled with what it means for us to be "release-ready". We didn't even try doing end-of-sprint releases until after sprint 11. Then we began talking about being "release-ready" as more of a relative thing. During active development, the stability of the code fluctuates. We simply try to make sure that the end of the sprint is a time when things are more stable than they were in the middle of the sprint. As much as possible, tasks should be completed and stuff should be checked in to the repository. This is our way of implementing good practices without trying to force things to happen that don't make sense.
Because Veracity is open source, even if we have struggled to figure out what "ready" means, the word "release" is pretty clear. At the end of every sprint, we package up the code and make it available for anyone who wants to see it. We label these code snapshots as "preview releases", and they include source code only, no compiled executables. These previews give us the opportunity to practice release preparation, hoping that the picture will be more complete when the product is more mature.
For us, one of the most useful parts of Scrum is the burndown chart. By adopting the disciplines of planning each sprint, estimating each task, and tracking our time, we are rewarded with a pretty picture.
Let me try and explain that better.
The real issues here are estimation and time tracking. In general, programmers hate both of these. I am no exception. I don't want to try and figure out how much time something is going to take. And I certainly don't want to keep track of how I am spending my time. Just leave me and my compiler alone and when the task is done, we will tell you.
I believe my attitudes about such things are not atypical. As developers, we carefully hone our ability to give excuses for not doing things we don't want to do.
I have come to think of estimation and time tracking as being similar to code coverage. People who have never really tried using code coverage tools are quick to point out all the reasons why code coverage is a waste of time. They can describe in great deal why code coverage will not solve all their problems. They know that even 100% code coverage does not guarantee that software is correct. All of their excuses are built on facts. But it is also difficult to find someone who has used code coverage who believes it is pointless.
Similarly, many of us can spout reasons why estimation and time tracking are a bad idea. It's a hassle. It's a waste of time. The estimates are never correct anyway. Steve McConnell has an excellent book on software estimation [3]. But for some of us, the mere length of this book (308 pages) becomes part of our excuse not to do estimation. If it takes 308 pages to explain it, then it's gotta be more trouble than it's worth, right?
It is true that best practices can be taken too far. Many of them produce their greatest returns when applied in a small way. Nobody's going to be hiring me as an agile coach, but I've got more experience than I did two years ago, and I've learned some great lessons. Nowadays, when somebody tries to tell me that estimation and time tracking are pointless, I ask them, "Have you tried these practices with 4-week sprints and a burndown chart?"
This is obviously not my first time trying to use estimation and time tracking, but my previous experiences didn't work quite as well. Scrum is part of the reason why:
And once you start doing estimates, then you get to use burndown charts, which, in my humble opinion, are deeply neato. The burndown chart gives us a visual representation of how our progress is going for any given sprint (see Figure 3).
The red line shows the ideal, what our work should look like. The green line shows reality. If we extrapolate the green line until it crosses the X axis, we can see when we could expect the tasks in the current sprint will be done, based on our progress so far.
Monitoring our burndown charts has allowed us to have a more realistic idea of when our product cycle will be complete. If we fail to finish the tasks for one sprint, something in the future is going to have to shift. Either the date moves back, or the feature list gets shorter.
Note that none of this stuff has been a panacea for us. There was a period of several months where every time we finished a sprint we had to insert a new one to deal with the stuff that didn't get done. Ian described sprint 15 as the first sprint where he didn't have to redo the 1.0 plan.
If I were being particularly pessimistic, I would observe that the only problem Scrum has solved is being unaware of our other problems. But that's still a pretty big deal. It is always better to confront reality than to avoid it.
Throughout this development cycle, we have been building a tool to support Scrum at the same time as we are learning how to do Scrum.
When the team first got started, we used Jira [4] by Atlassian.
Disclosure: I have no legal or financial connection with Atlassian. In fact, I suppose it would be accurate to say that they are a competitor, one for whom I have much admiration.
Later, we migrated all our project tracking to Veracity's Scrum module. Building tools for Scrum practitioners has forced us to think about Scrum in different ways than we would by simply practicing it.
Sometimes this has been incredibly helpful. One of the things we did was build a dashboard that is integrated with our build system, so we can see at a glance how the continuous integration and nightly builds are getting along. We release a snapshot of the code every night if the nightly build passes all the automated tests (see Figure 4).
At other times, the duality of our situation has made things awkward. Sometimes we get in debates about how the more experienced Scrum teams would want our software to work. For example, we have a long-running argument about the "priority" field. Our company has been selling bug-tracking software for 10 years. Every tool we have ever written has had a priority field. All bug-tracking tools have a priority field. It is heresy to suggest not having one.
But if we're doing Scrum, do we really need one? What would we use it for? When we plan sprints, we move stuff from the backlog into the current sprint. Once it's in the sprint, it doesn't really have a priority. It's either in the sprint or it's not.
I suppose the priority field could be more useful as we make decisions about what gets moved from the backlog into each sprint. But it's not like we're going to just sort by priority and take the top 10 items per person. The priority field contains one person's subjective opinion of how important something was at some point in the past. When I'm triaging stuff for the next sprint, I want to know how important this work item is now.
Another recurring issue is about how much flexibility should be provided for people who get behind on their scrum planning and time tracking. And I'll just go ahead and admit that I am one of the primary culprits.
During sprint 14, I basically did no planning or time tracking. I did plenty of coding, but in terms of making sure other people could see how my work was going, I did a terrible job. I promised to do better in sprint 15.
So once again our team ended up in a philosophical discussion of how Scrum should be done, blended with a discussion of how our software should work. It seemed to me that any Scrum team should want to provide amnesty for developers who actually want to get caught up.
Anyway, through a combination of increased discipline and cheating, I was able to get my sprint 15 burndown chart to be a fairly accurate reflection of what really happened. And I am pleased to report that I did a much better job planning and time tracking during sprint 16. There's hope for me yet.
We're going to continue trying to do Scrum better, improving with each iteration. Looking ahead, I see a number of places we can move forward.
I hope that after our first release to end users, we will be able to consider short sprints with a truly release-ready build at the end of each sprint.
Currently, the pigs work mostly in isolation. We just haven't had many chickens around. That will change as the product gets into the hands of end users. Our pigs and chickens will have to learn how to deal with each other.
We need to spend more time and attention between sprints when we prioritize our backlog. So far, it has been reasonably simple to figure out what is going to happen in each sprint. We are dogfooding. Each sprint, we fix the stuff that doesn't work. In the future, more voices and stakeholders will be involved. The process of planning each sprint will change and will [I think] become a bit more typical of Scrum practices.
My role will evolve into something more like the Product Owner. This Scrum role has not really existed for us, at least not in the way I think it usually does. In terms of vision and direction, Veracity has a lot of me in it, but I've been working primarily as a coder. In the future, I will be stepping off the development team and working more in the non-programming roles.
As we continue gaining experience with agile development, we are interested in the degree to which those who use agile practices function as a community.
In the past, our company has a great deal of experience working within the Microsoft .NET community. We found partners and friends there, people with whom we could consult or commiserate. Looking to the future, we have found ourselves wondering: Where do developers find community without being religiously devoted to a platform?
[1] http://www.youtube.com/watch?v=Q5k7a9YEoUI
[2] http://campfirenow.com/
[3] McConnell, Steve. "Software Estimation: Demystifying the Black Art", Microsoft Press, 2006.
[4] http://www.atlassian.com/software/jira/


Admin: Bodies
| UID | Name | Regionalschlüssel | Funktionen |
|---|---|---|---|
| UID | Name | Regionalschlüssel | Funktionen |
| {{ body._id }} | {{ body.name }} | {{ body['regionalschlüssel'] }} | edit |
{% extends "layout.html" %} {% import "bootstrap/wtf.html" as wtf %} {% block title %}Admin: Konfiguration{{super()}}{% endblock %} {% block riscontent %}
| UID | Name | Regionalschlüssel | Funktionen |
|---|---|---|---|
| UID | Name | Regionalschlüssel | Funktionen |
| {{ body._id }} | {{ body.name }} | {{ body['regionalschlüssel'] }} | edit |


publications
Publications by year in reversed chronological order.
See also my profile on Google Scholar.
2020
-
GraphRepo: Fast Exploration in Software Repository Mining arXiv preprint arXiv:2008.04884, 2020 [arXiv]
2019
2018
-
Understanding the Relation between Information Technology Capability and Organizational Performance In 26th European Conference on Information Systems: Beyond Digitization - Facets of Socio-Technical Change, ECIS 2018, Portsmouth, UK, June 23-28, 2018, pp. 41, 2018 [url]
-
The Impact of Culture on the Business Value of IT - an Examination from two Sectors In 26th European Conference on Information Systems: Beyond Digitization - Facets of Socio-Technical Change, ECIS 2018, Portsmouth, UK, June 23-28, 2018, pp. 42, 2018 [url]
2017
-
The Influence of Teamwork Quality on Software Team Performance CoRR, Vol abs/1701.06146, 2017 [arXiv]
-
Towards a procedure for survey item selection in MIS In 21st Pacific Asia Conference on Information Systems, PACIS 2017, Langkawi, Malaysia, July 16-20, 2017, pp. 95, 2017 [url]
-
Computer Aided Verification of Relational Models by Strategic Rewriting Journal of Computer Science & Technology, Vol 17, 2017
2016
-
Streaming software analytics In Proceedings of the 2nd International Workshop on BIG Data Software Engineering, BIGDSE@ICSE 2016, Austin, Texas, USA, May 16, 2016, pp. 8–11, ACM, 2016 [DOI]
-
Computer Aided Verification of Relational Models In XXII Congreso Argentino de Ciencias de la Computación (CACIC 2016)., 2016
-
Towards a Benchmark for the Maintainability Evolution of Industrial Software Systems In 2016 Joint Conference of the International Workshop on Software Measurement and the International Conference on Software Process and Product Measurement, IWSM-MENSURA 2016, Berlin, Germany, October 5-7, 2016, pp. 11–21, IEEE Computer Society, 2016 [DOI]
2015
-
SIG/TÜViT evaluation criteria trusted product maintainability: Guidance for producers Software Improvement Group, Tech. Rep., pp. 7, 2015
-
Refining Software Quality Prediction with LOD In Proceedings of the 11th International Workshop on Uncertainty Reasoning for the Semantic Web (URSW 2015) co-located with the 14th International Semantic Web Conference (ISWC 2015), Bethlehem, USA, October 12, 2015, Vol 1479, pp. 50–53, CEUR-WS.org, 2015 [url]
-
What Affects Information Technology Capability: A Meta-Analysis on Aspects that Influence Information Technology Capability In 21st Americas Conference on Information Systems, AMCIS 2015, Puerto Rico, August 13-15, 2015, Association for Information Systems, 2015 [url]
2014
-
Quantifying the encapsulation of implemented software architectures In 2014 IEEE International Conference on Software Maintenance and Evolution, pp. 211–220, 2014
-
SIG/TÜViT Evaluation Criteria Trusted Product Maintainability: Guidance for producers Version 6.1 Software Improvement Group, 2014
-
SIG TÜViT evaluation criteria trusted product maintainability, 2014
-
Towards a catalog format for software metrics In Proceedings of the 5th International Workshop on Emerging Trends in Software Metrics, pp. 44–47, 2014
-
Test code quality and its relation to issue handling performance IEEE Transactions on Software Engineering, Vol 40, No. 11, pp. 1100–1125, IEEE, 2014
-
A practical model for evaluating the energy efficiency of software applications , [Sl]: Atlantis Press, 2014
-
Semantic versioning versus breaking changes: A study of the maven repository In 2014 IEEE 14th International Working Conference on Source Code Analysis and Manipulation, pp. 215–224, 2014
-
Evaluating the testing quality of software defined infrastructures 2014
-
Model-based programming environments for spreadsheets Science of Computer Programming, Vol 96, pp. 254–275, Elsevier, 2014
2013
-
Generative and Transformational Techniques in Software Engineering IV: International Summer School, GTTSE 2011, Braga, Portugal, July 3-9, 2011, Revised and Extended Papers Springer, 2013
-
Testing principles, current practices, and effects of change localization In 2013 10th Working Conference on Mining Software Repositories (MSR), pp. 257–266, 2013
-
Evaluating usefulness of software metrics: an industrial experience report In 2013 35th International Conference on Software Engineering (ICSE), pp. 921–930, 2013
-
Detecting cross-language dependencies generically In 2013 17th European Conference on Software Maintenance and Reengineering, pp. 349–352, 2013
-
Seflab: A lab for measuring software energy footprints In 2013 2nd International workshop on green and sustainable software (GREENS), pp. 30–37, 2013
-
Measuring the degree of service orientation in proprietary SOA systems In 2013 IEEE Seventh International Symposium on Service-Oriented System Engineering, pp. 233–244, 2013
-
Towards high performance software teamwork In Proceedings of the 17th International Conference on Evaluation and Assessment in Software Engineering, pp. 212–215, 2013
-
Energy-efficiency indicators for e-services In 2013 2nd International Workshop on Green and Sustainable Software (GREENS), pp. 24–29, 2013
-
Software metrics: pitfalls and best practices In 2013 35th International Conference on Software Engineering (ICSE), pp. 1491–1492, 2013
-
The maven repository dataset of metrics, changes, and dependencies In 2013 10th Working Conference on Mining Software Repositories (MSR), pp. 221–224, 2013
-
Energy efficiency optimization of application software Vol 88, pp. 199–241, Elsevier, 2013
-
A practical model for rating software security In 2013 IEEE Seventh International Conference on Software Security and Reliability Companion, pp. 231–232, 2013
-
Generative and TransformationalTechniques in Software Engineering IV , 2013
-
Identification of application-level energy optimizations Proceeding of ICT for Sustainability (ICT4S), Vol 4, pp. 101–107, 2013
2012
-
Change is the Constant: keynote , 2012
-
Constraint-aware schema transformation , Elsevier, 2012
-
Standardized code quality benchmarking for improving software maintainability Software Quality Journal, Vol 20, No. 2, pp. 287–307, Springer US, 2012
-
Faster issue resolution with higher technical quality of software Software quality journal, Vol 20, No. 2, pp. 265–285, Springer US, 2012
-
Continuous Architecture Evaluation In of the BElgian-NEtherlands software eVOLution seminar, pp. 22, 2012
-
Detection of seed methods for quantification of feature confinement In International Conference on Modelling Techniques and Tools for Computer Performance Evaluation, pp. 252–268, 2012
-
Issue handling performance in proprietary software projects In 2012 9th IEEE Working Conference on Mining Software Repositories (MSR), pp. 209–212, 2012
-
What is the value of your software? In 2012 Third International Workshop on Managing Technical Debt (MTD), pp. 37–44, 2012
-
An analysis of dependence on third-party libraries in open source and proprietary systems In Sixth International Workshop on Software Quality and Maintainability, SQM, Vol 12, pp. 64–67, 2012
-
Getting what you measure Communications of the ACM, Vol 55, No. 7, pp. 54–59, ACM New York, NY, USA, 2012
-
Governance of spreadsheets through spreadsheet change reviews arXiv preprint arXiv:1211.7100, 2012
-
Measuring software library stability through historical version analysis In 2012 28th IEEE International Conference on Software Maintenance (ICSM), pp. 378–387, 2012
-
Automatic event detection for software product quality monitoring In 2012 Eighth International Conference on the Quality of Information and Communications Technology, pp. 30–37, 2012
-
Technical debt in software development: from metaphor to theory report on the third international workshop on managing technical debt ACM SIGSOFT Software Engineering Notes, Vol 37, No. 5, pp. 36–38, ACM, 2012
-
The use of UML class diagrams and its effect on code change-proneness In Proceedings of the Second Edition of the International Workshop on Experiences and Empirical Studies in Software Modelling, pp. 1–6, 2012
-
Measuring Library Stability Through Historical Version Analysis Technical Report Series TUD-SERG-2012-012, Delft University of Technology, Software Engineering Research Group, 2012
-
How does your software measure up? Mastering the DNA of our information society Inagural address, Radboud Universiteit Nijmegen, 2012 [url]
-
Verspilling Informatie-Maandblad voor de Informatievoorziening, Vol 54, No. 3, pp. 33, 2012
-
How does your software measure up? Mastering the DNA of our information society Radboud University, 2012 [url]
2010
-
Deriving metric thresholds from benchmark data In 2010 IEEE International Conference on Software Maintenance, pp. 1–10, 2010
-
Faster defect resolution with higher technical quality of software In 4th international workshop on software quality and maintainability (SQM 2010), 2010
-
Assessment of issue handling efficiency In 2010 7th IEEE Working Conference on Mining Software Repositories (MSR 2010), pp. 94–97, 2010
-
A cognitive model for software architecture complexity In 2010 IEEE 18th International Conference on Program Comprehension, pp. 152–155, 2010
2009
-
From spreadsheets to relational databases and back In Proceedings of the workshop on Partial evaluation and program manipulation-PEPM, 2009
-
Discovery-based edit assistance for spreadsheets In 2009 IEEE Symposium on Visual Languages and Human-Centric Computing (VL/HCC), pp. 233–237, 2009
-
Criteria for the evaluation of implemented architectures In 2009 IEEE International Conference on Software Maintenance, pp. 73–82, 2009
-
A survey-based study of the mapping of system properties to ISO/IEC 9126 maintainability characteristics In 2009 IEEE International Conference on Software Maintenance, pp. 61–70, 2009
-
Static estimation of test coverage In 2009 Ninth IEEE International Working Conference on Source Code Analysis and Manipulation, pp. 55–64, 2009
-
3rd International Workshop on Software Quality and Maintainability In 2009 13th European Conference on Software Maintenance and Reengineering, pp. 271–272, 2009
-
A Language for Proofs Using Galois Connections and Fork Algebras , 2009
-
Galois: A language for proofs using galois connections and fork algebras , ACM, 2009
-
From spreadsheets to relational databases and back In Proceedings of the 2009 ACM SIGPLAN workshop on Partial evaluation and program manipulation, pp. 179–188, 2009
2008
-
Coupled transformation of schemas, documents, queries, and constraints Electronic Notes in Theoretical Computer Science, Vol 200, No. 3, pp. 3–23, Elsevier, 2008
-
A case study in grammar engineering In International Conference on Software Language Engineering, pp. 285–304, 2008
-
Certification of technical quality of software products In Proc. of the Int’l Workshop on Foundations and Techniques for Open Source Software Certification, pp. 35–51, 2008
-
Generative and Transformational Techniques in Software Engineering II Springer Berlin/Heidelberg, 2008
-
Benchmarking technical quality of software products In 2008 15th Working Conference on Reverse Engineering, pp. 297–300, 2008
-
Interpretation of source code clusters in terms of the ISO/IEC-9126 maintainability characteristics In 2008 12th European Conference on Software Maintenance and Reengineering, pp. 63–72, 2008
-
Industrial Realities of Program Comprehension (IRPC 2008) In 2008 16th IEEE International Conference on Program Comprehension, pp. 283–284, 2008
2007
-
Observing unit test maturity in the wild 13th Dutch Testing Day, 2007
-
Strongly typed rewriting for coupled software transformation Electronic Notes in Theoretical Computer Science, Vol 174, No. 1, pp. 17–34, Elsevier, 2007
-
Coupled schema transformation and data conversion for XML and SQL In International Symposium on Practical Aspects of Declarative Languages, pp. 290–304, 2007
-
Transformation of structure-shy programs: applied to XPath queries and strategic functions In Proceedings of the 2007 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation, pp. 11–20, 2007
-
Monitoring the quality of outsourced software In Proc. Int. Workshop on Tools for Managing Globally Distributed Software Development (TOMAG 2007), J. van Hillegersberg et al., Eds. Center for Telematics and Information Technology, Netherlands, 2007
-
Quality assessment for embedded SQL In Seventh IEEE International Working Conference on Source Code Analysis and Manipulation (SCAM 2007), pp. 163–170, 2007
-
Extended static checking by strategic rewriting of pointfree relational expressions Draft of February, Vol 3, 2007
-
Maintainability index revisited–position paper In Special session on system quality and maintainability (SQM 2007) of the 11th European conference on software maintenance and reengineering (CSMR 2007), 2007
-
A type-level approach to component prototyping In International workshop on Synthesis and analysis of component connectors: in conjunction with the 6th ESEC/FSE joint meeting, pp. 23–36, 2007
-
SdfMetz: Extraction of Metrics and Graphs From Syntax Definitions—Tool Demonstration— , 2007
-
A practical model for measuring maintainability In 6th international conference on the quality of information and communications technology (QUATIC 2007), pp. 30–39, 2007
2006
-
Generative and Transformational Techniques in Software Engineering-International Summer School, GTTSE 2005. Braga, Portugal, July 4-8, 2005. Revised Papers Lecture Notes in Computer Science, Vol 4143, Berlin: Springer-Verlag, 1973-, 2006
-
Structure metrics for XML Schema Proceedings of XATA, Vol 2006, 2006
-
Strong types for relational databases In Proceedings of the 2006 ACM SIGPLAN workshop on Haskell, pp. 25–36, 2006
-
Matching objects without language extension , Eth Swiss Federal Institute of Technology, 2006
-
Grammar-centered development of vdm support In Towards Next Generation Tools for VDM: Contributions to the First International Overture Workshop, Newcastle, July 2005, pp. 11, 2006
-
Strong Types for Relational Data Stored in Databases or Spreadsheets , 2006
-
Generative and Transformational Techniques in Software Engineering: International Summer School, GTTSE 2005, Braga, Portugal, July 4-8, 2005. Revised Papers Springer, 2006
-
Functional pearl: Strong types for relational databases In ACM SIGPLAN 2006 Haskell Workshop, 2006
-
Strong Types for Relational Databases (Functional Pearl) , 2006
-
Type-safe two-level data transformation In International Symposium on Formal Methods, pp. 284–299, 2006
2005
-
Strategic term rewriting and its application to a VDM-SL to SQL conversion In International Symposium on Formal Methods, pp. 399–414, 2005
-
Metrication of SDF grammars Dept. de Informática da Univ. do Minho Campus de Gualtar, Braga, Portugal. Rep. Tec. DI-PURe-05.05, Vol 1, 2005
-
Development of an industrial strength grammar for VDM Techn. Report DI-PURe-05.04, Vol 1, 2005
-
CAMILA revival: VDM meets Haskell , University of Newcastle TR series, 2005
-
Haskell Communities and Activities Report , 2005
2004
-
A Tool-based Methodology for Software Portfolio Monitoring. In Software Audit and Metrics, pp. 118–128, 2004
-
Source model analysis using the JJTraveler visitor combinator framework Software: Practice and Experience, Vol 34, No. 14, pp. 1345–1379, John Wiley & Sons, Ltd., 2004
-
Tutorial on strategic programming across programming paradigms In 8th Brazilian Symposium on Programming Languages, Niteroi, Brazil, pp. 96, 2004
-
Kwaliteit-Portal voor broncodeanalyse Informatie-Maandblad voor de Informatievoorziening, pp. 41–41, Amsterdam., 2004
-
Applying Type Reconstruction Techniques to Detect Undersized Account Numbers in an Object-oriented Software Portfolio–Practitioner Report– , 2004
-
Portfolio-monitoring INFORMATIE, pp. 40–44, INTERMEDIA BV-SAMSON-JOURNALS, 2004
-
Matching Objects 2004
2003
-
A Strafunski application letter In International Symposium on Practical Aspects of Declarative Languages, pp. 357–375, 2003
-
Strategic programming meets adaptive programming In Proceedings of the 2nd international conference on Aspect-oriented software development, pp. 168–177, 2003
-
Generic traversal over typed source code representations 2003
-
REPORT SEN-E0325 DECEMBER 23, 2003 , Citeseer, 2003
-
REPORT SEN-E0324 DECEMBER 23, 2003 , 2003
-
REPORT SEN-E0321 DECEMBER 23, 2003 , 2003
2002
-
Domain-specific languages Encyclopedia of Microcomputers, Vol 28, pp. 53–68, 2002
-
The essence of strategic programming–an inquiry into trans-paradigmatic genericity Draft, submitted for publication, 2002
-
Design patterns for functional strategic programming In Proceedings of the 2002 ACM SIGPLAN workshop on Rule-based programming, pp. 1–14, 2002
-
Grammars as feature diagrams In ICSR7 Workshop on Generative Programming, pp. 23–24, 2002
-
Building program understanding tools using visitor combinators In Proceedings 10th International Workshop on Program Comprehension, pp. 137–146, 2002
-
Strategic polymorphism requires just two combinators! arXiv preprint cs/0212048, 2002
-
Workshop on Generative Programming 2002 (GP2002) In International Conference on Software Reuse, pp. 331–331, 2002
-
Typed combinators for generic traversal In International Symposium on Practical Aspects of Declarative Languages, pp. 137–154, 2002
2001
-
The ASF+SDF Meta-environment: A Component-Based Language Development Environment In Compiler Construction, pp. 365–370, 2001
-
Visitor combination and traversal control In Proceedings of the 16th ACM SIGPLAN conference on Object-oriented programming, systems, languages, and applications, pp. 270–282, 2001
-
XT: A bundle of program transformation tools system description Electronic Notes in Theoretical Computer Science, Vol 44, No. 2, pp. 79–86, Elsevier, 2001
-
Collaborative software development Centrum voor Wiskunde en Informatica, 2001
-
REPORT SEN-R0124 AUGUST 2001 , 2001
-
REPORT SEN-R0210 JUNE 30, 2002 , 2001
2000
-
Domain-specific languages: An annotated bibliography ACM Sigplan Notices, Vol 35, No. 6, pp. 26–36, ACM, 2000
-
Dealing with large bananas , Citeseer, 2000
-
Grammars as contracts In International Symposium on Generative and Component-Based Software Engineering, pp. 85–99, 2000
-
Functional transformation systems , Citeseer, 2000
-
Type-safe functional strategies In Scottish Functional Programming Workshop, Vol 7, 2000
-
Domain-specific languages 2000
1999
-
HASDF: A generalized lr-parser generator for haskell , CWI (Centre for Mathematics and Computer Science), 1999


Log4Qt
Introduction
Log4Qt is a C++ port of the Apache Software Foundation Log4j package using the
Trolltech Qt Framework. It is intended to be used by open source and commercial
Qt projects.
Documentation
The documentation describes classes and methods that have been added or changed
compared to Log4j. The documentation was generated from the source code using
Doxygen. It can be accessed here.
How to use
To use Log4Qt within your software project include the Log4Qt source into your project
-
Download the package from the
SourceForge project page
-
Unpack the Log4Qt package
-
Add the log4qt source to the Qt project file by adding the following line
include(<unpackdir>/src/log4qt/log4qt.pri)
-
Include the Logger class, a layout and an appender class to configure Log4Qt to generate output. The example uses the ConsoleAppender with a TTCCLayout
include "log4qt/consoleappender.h"
include "log4qt/logger.h"
include "log4qt/ttcclayout.h"
-
Configure a logger to generate output. The example uses the root logger
// Create a layout
Log4Qt::LogManager::rootLogger();
TTCCLayout *p_layout = new TTCCLayout();
p_layout->setName(QLatin1String("My Layout"));
p_layout->activateOptions();
// Create an appender
ConsoleAppender *p_appender = new ConsoleAppender(p_layout, ConsoleAppender::STDOUT_TARGET);
p_appender->setName(QLatin1String("My Appender"));
p_appender->activateOptions();
// Set appender on root logger
Log4Qt::Logger::rootLogger()->setAppender(p_appender);
-
Request a logger by either calling Log4Qt::Logger::logger or using LOG4QT_DECLARE_QCLASS_LOGGER
// Request a logger and output "Hello World!"
Log4Qt::Logger::logger(QLatin1String("My Logger"))->info("Hello World!");
Releases
-
0.3 - 01 March 2009
Bug fixes, compatibility with VS 2008 and Qt 4,5 RC1
-
Fixed a problem where the pParent parameter of the constructor was not passed on to the QObject constructor (logobject.h)
-
Fixed a problem were OptionConverter::toBoolean would not return the default value, if the conversion fails (optionconverter.cpp)
-
Fixed a compile error on VS 2008 by using Q_UNUSED(&rEvent) instead of Q_UNUSED(rEvent) (varia/denyallfilter.h.h)
-
Fixed VS 2008 unreferenced formal parameter warning by using Q_UNUSED (logmanager.cpp, mdc.cpp, ndc.cpp, propertyconfigurator.cpp, helpers/initialisationhelper.cpp, helpers/patternformatter.cpp)
-
0.2 - 30 January 2009
Bug fixes and compatibility with Qt 4.4
-
Added a compile time version check for the Qt version (log4qt.h)
-
Replaced usage of q_atomic_increment and q_atomic_decrement with QAtomicInt for compilation with Qt 4.4 (helpers/logobject.h)
-
Replaced usage of q_atomic_test_and_set_ptr with QAtomicPointer for compilation with Qt 4.4 (logger.h, helpers/classlogger.cpp, helpers/classlogger.h, helpers/initialisationhelper.h)
-
Fixed a problem with Qt 4.4 where QReadWriteLock is by default non-recursive (hierarchy.cpp, logger.cpp)
-
Resolved compilation problem with Microsoft Visual Studio 2005 (logmanager.cpp, helpers/datetime.cpp)
-
0.1 - 29 December 2007
Initial Version
Known Problems
-
The Eclipse CDT console does not display the log output of a correctly
when using a ConsoleAppender with a TTCCLayout and relative time format.
The millisecond count is stripped from the output.
License
Log4Qt is licensed under the
Apache License Version 2.0.
Log4Qt requires the Qt framework that is available under several licensing options
(Qt licensing).
The package is intended to be used under the
Nokia Corporation Qt GPL Exception.
Links
|
XX February 2009, Martin Heinrich |


 If you are found to be in violation of our policies at any time, as determined by Blue Link Labs in its sole discretion, we may warn you or suspend or terminate your account. Please note that we may change our Acceptable Use Policy at any time, and pursuant to the Hashbase Terms, it is your responsibility to keep up-to-date with and adhere to the policies posted here. All capitalized terms used herein have the meanings stated in the Terms, unless stated otherwise.
Prohibited content
The Content displayed and/or processed through your Application or other web site utilizing the Service shall not contain any of the following types of content:
- Content that infringes a third party's rights (e.g., copyright) according to applicable law;
- Excessively profane content;
- Pornography;
- Hate-related or violent content;
- Content advocating racial or ethnic intolerance;
- Content intended to advocate or advance computer hacking or cracking;
- Gambling;
- Other illegal activity, including without limitation illegal export of controlled substances or illegal software;
- Drug paraphernalia;
- Phishing;
- Malicious content;
- Content that is violates the securities, money laundering, banking or any related laws or regulations of any country or territories in which the Content is directed or countries or territories in which you have knowledge or should have knowledge where such Content has been or is being accessed;
- Content which mines cryptocurrencies;
- Content which generates Denial of Service attacks;
- Content which collects personally identifiable information of any person or entity without their express consent;
- Any utilization of circular popups, multiple popups or any redirect, link or referral which creates an offensive or unpleasant user experience.
- Other material, products or services that violate or encourage conduct that would violate any criminal laws, any other applicable laws, or any third-party rights.
Prohibited actions
In addition to (and/or as some examples of) the violations described in the Terms, you may not and may not allow any third party, including your End Users, to:
- Generate or facilitate unsolicited commercial email ("spam"). Such activity includes, but is not limited to:
- sending email in violation of the CAN-SPAM Act or any other applicable anti-spam law;
- imitating or impersonating another person or his, her or its email address, or creating false accounts for the purpose of sending spam;
- data mining any web property (including Hashbase) to find email addresses or other user account information;
- sending unauthorized mail via open, third-party servers;
- sending emails to users who have requested to be removed from a mailing list;
- selling, exchanging or distributing to a third party the email addresses of any person without such person's knowing and continued consent to such disclosure; and
- sending unsolicited emails to significant numbers of email addresses belonging to individuals and/or entities with whom you have no preexisting relationship.
- Send, upload, distribute or disseminate or offer to do the same with respect to any unlawful, defamatory, harassing, abusive, fraudulent, infringing, obscene, or otherwise objectionable content
- Intentionally distribute viruses, worms, defects, Trojan horses, corrupted files, hoaxes, or any other items of a destructive or deceptive nature;
- Conduct or forward pyramid schemes and the like;
- Transmit content that may be harmful to minors;
- Impersonate another person (via the use of an email address or otherwise) or otherwise misrepresent yourself or the source of any email;
- Illegally transmit another's intellectual property or other proprietary information without such owner's or licensor's permission;
- Use the Service to violate the legal rights (such as rights of privacy and publicity) of others;
- Promote or encourage illegal activity;
- Interfere with other users' enjoyment of the Service;
- Perform significant load testing without first obtaining Blue Link Labs's written consent (email permitted), as otherwise these may be treated as denial-of-service attacks;
- Sell, trade, resell or otherwise exploit the Service for any unauthorized commercial purpose;
- Modify, adapt, translate, or reverse engineer any portion of the Service;
- Remove any copyright, trademark or other proprietary rights notices contained in or on the Service;
- Reformat or frame any portion of the web pages that are part of the Service's administration display;
- Display any content on the Service that contains any hate-related or violent content or contains any other material, products or services that violate or encourage conduct that would violate any criminal laws, any other applicable laws, or any third party rights;
- Modify the Hashbase logo or any other Hashbase Marks;
- Use the Service, or any interfaces provided with the Service, to access any Hashbase product or service in a manner that violates the Terms or other terms and conditions for use of such Hashbase product or service.
Quotas and limits
Hashbase has certain soft and hard limits in using its service. Hard limits are automatically enforced by the Service. Soft limits are consumable resources that you agree not to exceed.
- Network Bandwidth: 2TB/month - Soft
- Request Length: 30 seconds - Hard
- Disk Usage: 100MB for free accounts, 10GB for pro accounts - Hard
This document is an adaptation of the Heroku Acceptable Use Policy. The original work has been modified. Heroku, Inc. is not connected with and does not sponsor or endorse Blue Link Labs or its use of the work.


Varun Dhawan, Sara Ali Khan, Mira Kapoor and Genelia D’Souza clicked in the city
by FilmfareBollywood stars are known for their hot bods and perfectly toned muscles. Today, our cameras snapped some Bollywood stars as they stepped out for their gym sessions. Varun Dhawan opted for an all comfy look as he was seen in an orange sleeveless tee and white shorts. His Coolie No.1 co-star Sara Ali Khan too was clicked post-workout in a traditional Indian outfit. Genelia D’Souza was seen in a red tee and a pair of tracksuits post her gym session. Shahid Kapoor’s ladylove Mira Kapoor too was all smiles she waved to the paparazzi waiting outside her gym.
Check out the pictures below.


| 1219 | (A) | Titus taries noghte for that bot to the Tempiłł wendis |
| 1222 | (C) | ¶ Tytus tariedde noȝte for þat . but to þe tempułł ȝode |
| 1205 | (D) | Than Tytus taried nogħt but to þe temple went |
| 1182 | (E) | ¶ Than tytus taryed nat . but to þe temple wente |
| (Ex) | ---- no text ---- | |
| 1247 | (L) | Tytus tarieþ noȝt for þat bot to þe temple wendiþ |
| (P) | ---- no text ---- | |
| 1190 | (U) | ¶ Then Titus tarid nogħt / but to the temple went |
| 283 | (V) | Titus taries noght for þat . but to þe temple wendes |


When we say we work with local mills, salvage yards, and suppliers, we mean it. All our partners suppliers are Puget Sound. Select the markers below to learn more.


When others hate on your sucess, just TAB on the haters!
How many times can you tab on the haters in one minute?
- Tab on the haters!
- Press the tab button as many times as you can in one minute!
- Challenge the high score to become the best Tabber
Press Tab to tab on the haters!


Sophie is a Data Science unicorn with hardcore coding skills. She’s serious about making Data Science and AI better through applied ethics and mentorship. She’ll bring the classic papers to the journal reading group. Python (expert), Javascript (fluent), R (fluent), SQL (fluent) .
Director of Curriculum, Senior Data Scientist
2017-
New York, NY
Data Science education company that provides corporate training and the only accedited Data Science bootcamp. The 12 week bootcamp is a project-based curriculum that covers the breadth of the field of Data Science.
Curriculum Design: leads the curriculum team of 15 Senior Data Scientists. Curriculum is the primary product for the bootcamp business (\$4M revenue per yr) and the basis for major corporate training contracts (multiple \$300k+ pilots with \$1M/yr option).
Learning management system (LMS): launched internal LMS which managed lesson planning, deployment of content to students, grading and access to solutions. The LMS standardized content across the company and enabled company-wide metrics for first time.
Management and coordination: Introduced industry best-practices including company-wide prioritization meetings, code reviews, and continuous integration. Oversaw increase in internal collaboration: YOY 7x commits and 20x issues/pull requests. Managed codebase, resolving disputes between ICs and overseeing product development.
Instruction: Taught and mentored 100s of students entering data science. Authored dozens of lessons including: SVMs, Data Science Ethics, Deep Learning, Generative Adversarial Networks.
CTO, Cofounder
2016-2017
New York, NY
Wearables start-up building fabrics that pair electrical stimulation to apps. Fundraising: \$20k convertible note (\$1.5M cap, 20% discount). Competitions: The Bridge (Coca Cola’s Accelerator) finalist (ranked 22/200). AlphaLab Gear National Hardware Cup semi-finalist. Vogt Awards finalist (\$25k non-dilutive funding). XlerateHealth finalist. Bucks for Bright Ideas winner.
Proof of concept: Designed and built hardware and software proof of concept. Validated underlying technology, collected data on 100+ customer experiences in target audience and demonstrated product-market fit.
Scalable design: Led engineering teams managing user data and designing a product for 10k/yr volume: the entirely in-house product stack included electronics hardware, firmware, and desktop app.
Human resources: Managed HR. Designed collaborative, version controlled, company Handbook.
Research Assistant, PhD Candidate
2012-2017
Newark, NJ
Project manager: Managed a data science team developing FOSS tools for replicable cross-platform video data processing at “Big Data” scale.
Web experiments: Designed full-stack web apps for large (n~1,000) behavioral experiments and administered experiments through Amazon Mechanical Turk. Mentored data scientists in full-stack design.
Interdisciplinary research: Lead author of interdisciplinary work on the foundations of learning and computational tractability of learning algorithms. Presented work in journals and conferences.
Searcy (2019) AI is Broken
Searcy (2019) Building Generative Adversarial Networks in Tensorflow and Keras
Searcy and Blinder (2018) Making Faces: Conditional generation of faces using GANs via Keras+Tensorflow
Searcy, W.K. Vong, Lane & Shafto (In prep) Cause and affect: Subjectively rational causal inference about affective content.
Searcy (In prep) Levels of expressivity: Learning across incompatible representational levels
Searcy & Shafto (2016) Cooperative Inference: Features, objects, and collections. Psychological Review.
Searcy & Shafto (2014) Learning biases for teaching boolean concepts.
PhD-ABD, MS
University of Louisville | Experimental Psychology: Computational Cognitive Science
MENG, BS
University of Louisville | Electrical and Computer Engineering
University Fellowship Award (2 years Full tuition plus stipend), National Merit Scholarship (5 years full tuition plus stipend)


public class HistoryAdapter extends ArrayAdapter<Consumption>
IGNORE_ITEM_VIEW_TYPE, NO_SELECTION
| Constructor and Description |
|---|
HistoryAdapter(Context context,
List<Consumption> consumptions)
Initializes
HistoryAdapter
instance with the specified HistoryFragment
host and
List <Consumption >
data source.
|
| Modifier and Type | Method and Description |
|---|---|
void |
add(Consumption consumption)
|
int |
getCount()
|
View |
getHolder(int position,
View convertView,
ViewGroup parent)
Maintains a connection between a
View and an Consumption
instance.
|
Consumption
|
getItem(int position)
|
long |
getItemId(int position)
|
void |
remove(Consumption consumption)
|
addAll, addAll, clear, createFromResource, getContext, getDropDownView, getFilter, getPosition, getView, insert, notifyDataSetChanged, setDropDownViewResource, setNotifyOnChange, sort
areAllItemsEnabled, getItemViewType, getViewTypeCount, hasStableIds, isEmpty, isEnabled, notifyDataSetInvalidated, registerDataSetObserver, unregisterDataSetObserver
public HistoryAdapter(Context context, List<Consumption> consumptions)
HistoryAdapter
instance with the specified HistoryFragment
host and
List
<Consumption
>
data source.
context
- host fragment.consumptions
- source of Consumption
instances.
public int getCount()
getCount
in
interface Adapter
getCount
in class ArrayAdapter<Consumption>
public Consumption getItem(int position)
getItem
in
interface Adapter
getItem
in class ArrayAdapter<Consumption>
public long getItemId(int position)
getItemId
in
interface Adapter
getItemId
in
class ArrayAdapter<Consumption>
public View getHolder(int position, View convertView, ViewGroup parent)
View
and an Consumption
instance. The HistoryAdapter
manages the creation and re-use of Holder instances as rows are scrolled into
and out of view.
Each view item is clickable (the View.OnClickListener
attached to
each is the host
HistoryFragment
),
supporting display of an APOD selected from the list view.
public void add(Consumption consumption)
add
in class ArrayAdapter<Consumption>
public void remove(Consumption consumption)
remove
in class ArrayAdapter<Consumption>


The 18-year-old forward could make his senior debut for the Rossoneri at home to Napoli on Saturday with Milan having struggled for form despite replacing Marco Giampaolo with Stefano Pioli.
Milan have lost three of their past four league games to slip to 14th in the Serie A table with teenager Maldini having the chance to follow in the footsteps of the club’s famous family.
His grandfather Cesare won four league titles with Milan and also coached the team to European Cup Winners’ Cup glory, while Paolo is considered one of the greatest defenders in Italian football history.
Paolo is now a director at the club and he could see Daniel become the latest Maldini star for Milan, who have been linked with a move for former striker Zlatan Ibrahimovic.
Daniel Maldini signed a new five-year contract with Milan earlier this month, the forward having featured during the International Champions Cup in pre-season.


{% extends "soc/base.html" %}
{% comment %}
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
{% endcomment %}
{% load list_helpers %}
{% block body %}
{% if slots_visible %}
Slots assigned: {{ entity.slots }}
{% endif %}
{% if entity.scope.duplicates_visible and duplicate_status %}
{% ifequal duplicate_status.status "processing" %}
The duplicates are being calculated, please note that what you are seeing might be incomplete.
{% else %}
{% if duplicate_status.calculated_on %}
The duplicates were last calculated on {{ duplicate_status.calculated_on|date:"jS F Y H:i" }} UTC.
Organization Admins can find the contact information necessary to resolve a duplicate on the
review page of the proposal.
{% endif %}
{% endifequal %}
{% endif %}
{% as_lists list %}
{% endblock %}


Chief Justice Of India's Office Comes Under RTI Act, Says Supreme Court
The top court upheld the 2010 judgment of the the Delhi High Court
by NewsroomThe Supreme Court on Wednesday ruled that the Office of Chief Justice of India comes under the Right to Information (RTI) Act.
The top court upheld the judgment of the the Delhi High Court. “Transparency does not undermine judicial independence. Judicial independence and accountability go hand-in-hand. Disclosure is a facet of public interest,” Live Law quoted Justice Sanjiv Khanna as saying.
On 10 January, 2010, the High Court had held that the office of the chief justice of India comes within the ambit of the RTI law, saying judicial independence was not a judge’s privilege, but a responsibility cast upon him.
A five-judge constitution bench of the Supreme Court had on 4 April reserved its verdict on the appeals filed in 2010 by the Supreme Court secretary general and its central public information officer against the high court and the central information commission’s (CIC’s) orders.
(With PTI inputs)


Basis Protocol, which raised $133 million from a number of credible investors, announced this week that it was shutting down. In it’s official statement , Basis cited “U.S. securities regulation” as a reason for its shutdown. More on what that means in the post her...


| Allows you to build almost all roads, rails and most buildings and zones of the game for free |
i am weak |
Demolishing and removing zones and building in zones with trees will still cost you a bit |
Codes should be typed in the game console |
| Gives you $100.000,000 Simoleons |
call cousin vinnie |
If you accept his offer that will appear in the Meet window you will be unable to get a Castle as a landmark |
Code should be typed in the game console |
| Gives you a castle to build that will appear in the Landmarks section. However this code only works if you refused the offer cousin Vinnie made for you in the code above. |
zyxwvu |
This code is only available after you prove your integrity by using the "call cousin Vinnie" cheat and refusing his offer. You may then use this cheat to receive the SimCity Castle which will appear in your Rewards menu. The castle boosts the land values and aura of the surrounding area. |
Code should be typed in the game console |
| Makes all gabage disposal facilities avalaible at the start of the game regardless of which year you started your city |
garbage in, garbage out |
None |
Code should be typed in the game console |
| Makes all types of power plants avaliable at the start of the game regardless of which year you started your city |
power to the masses |
None |
Code should be typed in the game console |
| Makes all types of water facilities avaliable at the start of the game regardless of which year you started your city |
water in the desert |
None |
Code should be typed in the game console |
| Makes all rewarded buildings avaliable at the start of the game regardless if you did what was needed to unlock them |
pay tribute to your king |
None |
Code should be typed in the game console |
| Makes all possible business deals to be offered in the Meet Window. (Casino, Mall, Maximum Security Prison, and Toxic Waste Disposal Plant) |
let's make a deal |
None |
Code should be typed in the game console |
| The code convert oceans(Except for lake and rivers) to salt water |
salt on |
None |
Code should be typed in the game console |
| The code convert oceans(Except for lake and rivers) to fresh water(Drinkable water) |
salt off |
None |
Code should be typed in the game console |
| Code raises your entire map to one unit of elevation. CAREFUL: Your entire city will be wiped out when you use it |
terrain one up |
You might want to use this code before you start building your city, since it will completely remove your city if you use it. |
Code should be typed in the game console |
| Code lowers your entire map to one unit of elevation. CAREFUL: Your entire city will be wiped out when you use it |
terrain one down |
You might want to use this code before you start building your city, since it will completely remove your city if you use it. |
Code should be typed in the game console |
| Code raises your entire map to ten units of elevation. CAREFUL: Your entire city will be wiped out when you use it |
terrain ten up |
You might want to use this code before you start building your city, since it will completely remove your city if you use it. |
Code should be typed in the game console |
| Code lowers your entire map to ten units of elevation. CAREFUL: Your entire city will be wiped out when you use it |
terrain ten down |
You might want to use this code before you start building your city, since it will completely remove your city if you use it. |
Code should be typed in the game console |
| Code makes all types of factories in your industrial zone to develop as high-tech industries |
nerdz rool |
If you dont want all your industries to become high tech, you might not want to use this cheat |
Code should be typed in the game console |
| Makes your city calendar return to January 1, 1900 |
i love red tape |
Buildings and facilities that werent invented, back then, might get locked to build again, until you return(again) to the year they were made avaliable |
Code should be typed in the game console |
| After enabling this cheat everytime you call for the UFO attack disaster you will get a squad of UFOs instead of just one |
ufo swarm |
Obviously: They will be able to deal more casualties to your city than just one UFO |
Code should be typed in the game console |
| A flock of birds will fly over your city |
the birds |
NONE |
Code should be typed in the game console |
| Traffic congestions will be reduced in your city |
traffic lights |
NONE |
Code should be typed in the game console |
| Makes the advisor you typed to say what you typed |
force (type advisor´s name here) to say (type what you want them to say here) |
Valid names to be used: Mortimer, Moe, Constance, Karen, Maria, Randall, Gus, and Petitioners. |
Code should be typed in the game console |
| Loads a specifiedgrayscale bitmap image in the current map. on your map. Replace (filename) with the full path of the bmp(bitmap) file you want to use as your terrain.
|
load terrain (filename) |
It will wipe any city you´ve built in the current map/scenario |
Code should be typed in the game console |


Are you interested in programming? Take this short quiz below to see what programming language is best for you!


See: Description
| Interface | Description |
|---|---|
| Action |
This is a simple interface intended to be implemented by
anonymous classes that need to create a deferred action of
some sort.
|
| TimedAction |
Generic action type that takes time as an argument.
|
| ValidatableMessage |
Classes of this type may implement the isValid() method to perform
a local validation of the contents of a message.
|
| Class | Description |
|---|---|
| BalancingTransaction |
Represents the broker's final supply/demand
imbalance in the current timeslot, and the Distribution Utility's charge
for this imbalance.
|
| BankTransaction |
Represents interest charges and payments for brokers.
|
| Broker |
A broker instance represents a competition participant.
|
| BrokerTransaction |
Superclass with common attributes for a number of transaction types.
|
| CapacityTransaction |
Represents the fee assessed by the Distribution Utility for peak
capacity events.
|
| CashPosition |
A CashPosition domain instance represents the current state of
a broker's cash account.
|
| ClearedTrade |
A ClearedTrade instance reports public information about a specific
market clearing -- clearing price and total quantity traded.
|
| Competition |
A competition instance represents a single PowerTAC competition and
at the same time serves as the place for all competition properties that can be
adjusted during competition setup (i.e.
|
| CustomerInfo |
A CustomerInfo instance represents a customer model (i.e.
|
| DistributionTransaction |
Represents the fee assessed
by the Distribution Utility for transport of energy over its facilities
during the current timeslot.
|
| HourlyCharge |
Represents the cost of power during a specific timeslot in a variable
Rate.
|
| IdGenerator |
Generates numeric ID values for domain types.
|
| MarketPosition |
A
MarketPosition domain instance represents the current position of a
single broker for wholesale power in a given timeslot. |
| MarketTransaction |
A MarketTransaction instance represents a trade in the wholesale market.
|
| Order |
A Order instance represents a market (no price specified) or a limit
(min/max price specified) order in the PowerTAC wholesale market.
|
| Orderbook |
An orderbook instance captures a snapshot of the PowerTAC wholesale market's orderbook
(the un-cleared bids and asks remaining after the market is cleared).
|
| OrderbookOrder |
Each instance is an individual un-cleared entry (a Bid or an Ask) within
an Orderbook.
|
| Rate |
Tariffs are composed of Rates.
|
| RateCore |
Common supertype of Rate classes, holds tariff ID for this rate.
|
| RegulationRate |
Tariffs are composed of Rates, including RegulationRates.
|
| Tariff |
Entity wrapper for TariffSpecification that supports Tariff evaluation
and billing.
|
| TariffEvaluationHelper |
Probe object that can be used by customer models and other players
to generate cost estimates for tariffs, including a risk-adjusted
estimates of the actual cost of
variable-rate tariffs.
|
| TariffMessage |
Supertype of all tariff-related messages that can be processed by
a TariffMessageProcessor.
|
| TariffSpecification |
Represents a Tariff offered by a Broker to customers.
|
| TariffTransaction |
A
TariffTransaction instance represents the kWh of energy consumed
(kWh < 0 ) or produced kWh > 0 by some members of a
specific customer model, in a specific timeslot, under a particular tariff. |
| TimeService |
This is the simulation time-keeper and event queue.
|
| Timeslot |
A timeslot instance describes an interval of time (slot) for which power may be
traded in the wholesale market.
|
| WeatherForecast |
A collection of weatherForecastPredictions giving hourly forecasts for
future timeslots.
|
| WeatherForecastPrediction |
A weather forecast report instance that describes the weather data
|
| WeatherReport |
A weather report instance that describes the weather data for one hour of the
simulation
|
| XMLMessageConverter |
Initializes the XStream message serialization system
|
| Enum | Description |
|---|---|
| CustomerInfo.CustomerClass | |
| RegulationRate.ResponseTime | |
| Tariff.State | |
| TariffTransaction.Type |
Copyright © 2019 Power TAC. All rights reserved.


Girl Develop It is here to provide affordable and accessible programs to learn software through mentorship and hands-on instruction.
Gain foundation to get started
Collaborate
Learn by doing
Open-source programming language used across industries to work with data.
"Open source...
"...programming language.."
"...used across industries.."
Photo credit: Deepanshu Bhalia
"...to work with data..."
Photo credit: Wickham & Grolemund's R for Data Science
Data Analysis
Mean, median, mode
Standard deviation, variance, minimum, maximum, kurtosis, skewness
Static Data Visualization
Photo credit: BBC
Static Data Vizualization
Photo credit: BBC
Static Data Visualization
Photo credit: BBC
Interactive Data Visualization
Source: R Graph Gallery
Interactive Data Visualization
Source: R Graph Gallery
Shiny Applications
Source: R Studio Shiny Application
Log in to your RStudio Cloud account
https://rstudio.cloudLocal alternative
Open local installation of RStudio on your laptop
R is like a powerful calculator!
What is 21.45% 0f $225?
Arithmetic operators: * + - / ** ^
Discrete vs. Continuous
Source: CFO
Source: Trackmystack.com
Data read with R can come from many sources
Source: Micro Strategy
c(<element 1>, <element 2>)
c(19, 24)
c('Brandon', 'Carla')
c(FALSE, TRUE)
object.name <- <object>
age <- c(19, 24)
name <- c('Brandon', 'Carla')
Note: Rules for object possible names in R are flexible.
data.frame(<vector 1>, <vector 2>)
data.frame( c('Brandon', 'Carla'), c(19, 24))
data.frame( name, age)
Objects in the workspace (a.k.a. global environment) indicate objects stored in the current memory (RAM on your local computer for local installation)
R loads data and any object created to memory. Low memory space limits the data size which can be used.
How old will our friends be in 2045
age <- c(19, 24)
age + (2045 - 2018)
function(<object>)
mean(age)
Functions often have optional arguments that can be specified and default options that can be changed
class(<object>)
attributes(<object>)
str(<object>)
length(<object>)
dim(<object>)
Some properties may be NULL if they have never been set or are not relevant to the object
is.numeric(<vector>)
is.character(<vector>)
is.logical(<vector>)
is.factor(<vector>)
as.something(object)
as.character(<vector>)
Output may differ depending on the object class
Or the function may not work at all with some objects
Or get files from GitHub repo: gdi-intro-to-r/r-files/r-intro-session1/
They are R's basic building block
Source: Base R Cheat Sheet
Source: Base R Cheat Sheet
Source: Base R Cheat Sheet
Or get files from GitHub repo: gdi-intro-to-r/r-files/r-intro-session1/
install.packages("<package name>")
library("<package name>")
Or get files from GitHub repo: gdi-intro-to-r/r-files/r-intro-session1/
5 minute crash course
The 3 essential layers
The 3 essential layers
Or get files from GitHub repo: gdi-intro-to-r/r-files/r-intro-session1/
Opportunity to work with census data and practice key ideas from session 1


DataSet holds the data for multiple classes of vector data.
More...
#include <DataSet.hpp>
|
| Iterator | iterator () const |
| |
| unsigned int | vectorCount () const |
| |
| Vector & | getVector (unsigned int idx) |
| |
| const Vector & | getVector (unsigned int idx) const |
| |
|
Vector & | operator[] (unsigned int idx) |
| | subscript operator for accessing vectors at the specified index.
|
| |
|
const Vector & | operator[] (unsigned int idx) const |
| | subscript operator for accessing vectors at the specified index.
|
| |
|
| DataSet () |
| | Default constructor to make.
|
| |
| unsigned int | addVectorClass (const std::string &name) |
| | Add a vector class to the dataset. More...
|
| |
|
unsigned int | getClassIndex (const std::string &name) |
| | Get class index from the class name.
|
| |
| void | addVector (const Vector &vec, const std::string &vectorClass="default") |
| | Add a vector to the specified class. More...
|
| |
|
const Vector & | getMaxValues () const |
| |
|
const Vector & | getMinValues () const |
| |
|
void | normalizeData (E_DATA_NORMALIZATION_MODE mode) |
| | Normalize the vector data to the -1.0 to 1.0 range. This should only be called once all vectors have been loaded to the dataset.
|
| |
DataSet holds the data for multiple classes of vector data.
| void DataSet::addVector |
( |
const Vector & |
vec, |
|
|
const std::string & |
vectorClass = "default" |
|
) |
| |
Add a vector to the specified class.
- Parameters
-
| vectorClass | Data class name. |
| vec | The vector data to add. |
| unsigned int DataSet::addVectorClass |
( |
const std::string & |
name | ) |
|
Add a vector class to the dataset.
- Returns
- The index of the vector class that was added.
| Vector & DataSet::getVector |
( |
unsigned int |
idx | ) |
|
- Returns
- The vector at the specified index.
| const Vector & DataSet::getVector |
( |
unsigned int |
idx | ) |
const |
- Returns
- The vector at the specified index.
- Returns
- An iterator that can be used to traverse this dataset.
| unsigned int DataSet::vectorCount |
( |
| ) |
const |
- Returns
- The number of vectors in the dataset
The documentation for this class was generated from the following files:
- D:/School/CWU/CS 481/Lots-of-Lines/source/DataModel/DataSet.hpp
- D:/School/CWU/CS 481/Lots-of-Lines/source/DataModel/DataSet.cpp


Welcome User , Seems Like you have not registered to the system
Spend a moment and register yourself


| One Minute Speech | ( | 00:30~ | ； | 00:45~ | ; | 01:00~ | 01:30 | ) |
| Ice Braker Speech | ( | 05:00~ | ； | 06:00~ | ; | 07:00~ | 07:30 | ) |
| Prepared Speech | ( | 06:00~ | ； | 07:00~ | ; | 08:00~ | 08:30 | ) |
| Table Topic Speech | ( | 01:00~ | ； | 01:30~ | ; | 02:00~ | 02:30 | ) |
| Evaluation | ( | 02:00~ | ； | 02:30~ | ; | 03:00~ | 03:30 | ) |
| Other | ( | ~ | ； | ~ | ; | ~ | ) |


Terms and conditions
By using this service you’re agreeing to the following terms of use. This includes the privacy policy
By creating an account, you agree to accept documents from the court electronically.
Who we are
This service is managed by Her Majesty’s Courts and Tribunals Service.
You should check these terms and conditions regularly. We may update them at any time without notice. If you continue to use this service after the terms and conditions have changed, you are deemed to have agreed to the changes.
Information provided by this service
This service provides information to support your claim or application. We cannot give legal advice on individual cases.
You should answer the questions in the service based on your circumstances and seek legal advice if you need it.
Sharing and storing data
Our privacy policy explains where your data is stored, and who it is shared with. Our cookie policy explains how this service uses and stores cookies.
Laws applying to this service
Your use of this service and any dispute arising from its use will be governed by and construed in accordance with the laws of England and Wales, including but not limited to the:
- Computer Misuse Act 1990
- Data Protection Act 1998 (until 25 May 2018)
- Data Protection Act 2018 (from 25 May 2018)
- General Data Protection Regulation
- Mental Capacity Act 2005
How to use this service responsibly
There are risks in using a shared computer (for example, in a library) to access this service. It’s your responsibility to be aware of these risks and to avoid using any computer which may leave your personal information accessible to others. You’re responsible if you choose to leave a computer unprotected while using this service.
You should take your own precautions to ensure that the way you access this service does not expose you to the risk of:
- viruses
- malicious computer code
- other forms of interference which may damage your computer system
You must not misuse this service by knowingly introducing viruses, trojans, worms, logic bombs or other material which is malicious or technologically harmful. You must not attempt to gain unauthorised access to this service, the system on which it is stored, or any server, computer or database connected to it. You must not attack this site using a denial-of-service attack or a distributed denial-of-service attack.
Entering personally sensitive information
This online service contains several free-text fields in which you may choose to enter information which is personally sensitive.
If you enter information about your:
- religious beliefs
- sexual orientation or sex life
- racial or ethnic origins
- political opinions
- religious or philosophical beliefs
- trade union membership
- genetic data or biometric data
- health data
You give us your consent to processing this information for the purpose of dealing with your application.
For more information about how we collect and store your personal data, see the privacy policy privacy policy.
Disclaimer
While we make every effort to keep information up to date, we don’t provide any guarantees, conditions or warranties that it will be:
- current
- secure
- accurate
- complete
- free from bugs or viruses
We don’t publish advice. You should get professional or specialist advice before doing anything on the basis of the information in the service.
We’re not liable for any loss or damage that may come from using this service. This includes:
- any direct, indirect or consequential losses
- any loss or damage caused by civil wrongs (‘tort’, including negligence), breach of contract or otherwise
- the use of this service, GOV.UK and any websites that are linked to or from it
- the inability to use this service, GOV.UK and any websites that are linked to or from it
This applies if the loss or damage was foreseeable, arose in the normal course of things or you advised us that it might happen.
This includes (but isn’t limited to) the loss of your:
- income or revenue
- salary, benefits or other payments
- business
- profits or contracts
- opportunity
- anticipated savings
- data
- goodwill or reputation
- intangible property, including loss, corruption or damage to data or any computer system
- wasted management or office time
We may still be liable for:
- death or personal injury arising from our negligence
- fraudulent misrepresentation
- any other liability which cannot be excluded or limited under applicable law
Contact us for further information.